“MySQL:服务器和服务器启动程序”的版本间差异

来自Wikioe
跳到导航 跳到搜索
第101行: 第101行:


=== mysql.server:MySQL服务器启动脚本 ===
=== mysql.server:MySQL服务器启动脚本 ===
<p>
<pre>
Unix 和类似 Unix 的系统上的 MySQL 发行版包含一个名为mysql.server的脚本,该脚本使用mysqld_safe启动 MySQL 服务器。


</p>
它可以在使用 System V 样式的运行目录来启动和停止系统服务的系统(例如 Linux 和 Solaris)上使用。


适用于 MySQL 的 macOS 启动项也使用它。
</pre>
* 对于某些 Linux 平台,从 RPM 或 Debian 软件包安装的 MySQL 包括对 ManagementMySQL 服务器启动和关闭的系统支持。在这些平台上,未安装mysql.server和mysqld_safe,因为它们是不必要的。
mysql.server 是在 MySQL 源代码树中使用的脚本名称。安装的名称可能不同(例如mysqld或mysql)。在下面的讨论中,根据您的系统调整名称mysql.server。
mysql.server将位置更改为 MySQL 安装目录,然后调用mysqld_safe。要以某些特定用户身份运行服务器,请将适当的user选项添加到全局'''/etc/my.cnf'''选项文件的'''[mysqld]'''组中。(如果在非标准位置安装了 MySQL 的二进制发行版,则可能必须编辑mysql.server。修改它以在运行mysqld_safe之前将位置更改为正确的目录。如果执行此操作,则mysql.server的修改后的版本可能需要在以后升级 MySQL 时被覆盖;请复制您可以重新安装的编辑版本。)
要使用mysql.server脚本手动启动或停止服务器,请从命令行使用start或stop参数调用它:
<syntaxhighlight lang="xml">
shell> mysql.server start
shell> mysql.server stop
</syntaxhighlight>
* “mysql.server stop”通过向服务器发送 signal 来停止服务器。您也可以通过执行“mysqladmin shutdown”手动停止服务器。
* 要在服务器上自动启动和停止 MySQL,必须在'''/etc/rc*'''文件中的适当位置添加启动和停止命令:
*# 如果您使用 Linux 服务器 RPM 软件包(“MySQL-server-VERSION.rpm”)或本地 Linux 软件包安装,则mysql.server脚本可能以'''mysqld'''或'''mysql'''的名称安装在'''/etc/init.d'''目录中。
*# 如果从源代码发行版安装 MySQL 或使用不会自动安装mysql.server的二进制发行版格式,则可以手动安装脚本。可以在 MySQL 安装目录下的'''support-files'''目录中或 MySQL 源代码树中找到它。将脚本复制到名称为mysql的'''/etc/init.d'''目录并使其可执行:
*#: <syntaxhighlight lang="xml">
shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql
</syntaxhighlight>
安装脚本后,激活脚本以在系统启动时运行所需的命令取决于您的 os:
# 在 Linux 上,您可以使用'''chkconfig''':
#: <syntaxhighlight lang="xml">
shell> chkconfig --add mysql
</syntaxhighlight>
# 在某些 Linux 系统上,似乎也需要以下命令来完全启用mysql脚本:
#: <syntaxhighlight lang="xml">
shell> chkconfig --level 345 mysql on
</syntaxhighlight>
# 在 FreeBSD 上,启动脚本通常应放在'''/usr/local/etc/rc.d/'''中。将mysql.server脚本安装为'''/usr/local/etc/rc.d/mysql.server.sh'''以启用自动启动。rc(8)手册页指出,仅当其基本名称与'''*.sh''' shell 文件名模式匹配时,才会执行此目录中的脚本。目录中存在的任何其他文件或目录都将被静默忽略。
# 作为上述设置的替代方法,某些 os 还使用'''/etc/rc.local'''或'''/etc/init.d/boot.local'''在启动时启动其他服务。要使用此方法启动 MySQL,请将以下命令添加到适当的启动文件中:
#: <syntaxhighlight lang="xml">
/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
</syntaxhighlight>
# 对于其他系统,请查阅 os 说明文件以了解如何安装启动脚本。
mysql.server从选项文件的'''[mysql.server]'''和'''[mysqld]'''部分中读取选项。
* 为了向后兼容,它还会读取[mysql_server]部分,但为最新,您应将此类部分重命名为[mysql.server]。
可以在全局'''/etc/my.cnf'''文件中为mysql.server添加选项。典型的my.cnf文件可能如下所示:
<syntaxhighlight lang="xml">
[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
basedir=/usr/local/mysql
</syntaxhighlight>
mysql.server脚本支持下 table 中显示的选项:
* (如果指定,则必须将它们放置在选项文件中,而不是在命令行中。mysql.server仅支持start和stop作为命令行参数)
{| class="wikitable"
! Option Name !! Description !! Type
|-
| basedir || MySQL 安装目录的路径 || Directory name
|-
| datadir || MySQL 数据目录的路径 || Directory name
|-
| pid-file || 服务器应在其中写入其进程 ID 的文件 || File name
|-
| service-startup-timeout || await 服务器启动的时间 || Integer
|}


=== mysqld_multi:管理多个MySQL服务器 ===
=== mysqld_multi:管理多个MySQL服务器 ===

2021年3月23日 (二) 21:41的版本


服务器和服务器启动程序

mysqld:MySQL服务器

mysqld 也称为 MySQL Server,是一个单线程程序,它不会产生其他进程。它可在 MySQL 安装中完成大部分工作。

MySQL 服务器 Management 对【包含数据库和 table 的】MySQL 数据目录的访问。数据目录也是其他信息(例如日志文件和状态文件)的默认位置。
  • 某些安装软件包包含名为“mysqld-debug”的服务器的调试版本。调用此版本而不是mysqld以获得调试支持、内存分配检查和跟踪文件支持。


MySQL 服务器启动时,它将侦听来自 Client 端程序的网络连接,并代 table 这些 Client 端 Management 对数据库的访问。

mysqld程序具有许多可以在启动时指定的选项。有关选项的完整列 table,请运行以下命令:

shell> mysqld --verbose --help


  • MySQL Server 还具有一组系统变量,这些变量会在运行时影响其操作。可以在服务器启动时设置系统变量,并且可以在运行时更改许多系统变量以实现动态服务器重新配置。
  • MySQL Server 还具有一组状态变量,这些变量提供有关其操作的信息。您可以监视这些状态变量以访问运行时性能 Feature。

mysqld_safe:MySQL服务器启动脚本

mysqld_safe 添加了一些安全功能,例如在发生错误时重新启动服务器以及将运行时信息记录到错误日志中。

推荐使用mysqld_safe在 Unix 上启动mysqld服务器。 
  • 对于某些 Linux 平台,从 RPM 或 Debian 软件包安装的 MySQL 包括对 ManagementMySQL 服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_safe,因为它是不必要的。


mysqld_safe尝试启动名为mysqld的可执行文件。要覆盖默认行为并明确指定要运行的服务器的名称,请为mysqld_safe指定“--mysqld”或“--mysqld-version”选项。也可以使用“--ledir”指示mysqld_safe在其中寻找服务器的目录。


mysqld_safe从选项文件(配置文件“my.ini”)的[mysqld][server][mysqld_safe]节中读取所有选项。例如,如果您指定这样的[mysqld]部分,则mysqld_safe将找到并使用--log-error选项:

[mysqld]
log-error=error.log
  • mysqld_safe的许多选项与mysqld的选项相同。
  • 如果在命令行中指定了mysqld_safe未知的选项,则会将它们传递给mysqld;如果在选项文件的[mysqld_safe]组中指定了这些参数,则会将它们忽略。
  • 为了向后兼容,mysqld_safe也会读取[safe_mysqld]部分,但为最新,您应将此类部分重命名为[mysqld_safe]。


mysqld_safe 接受命令行和选项文件中的选项,如下:

Option Name Description Introduced Deprecated
--basedir MySQL 安装目录的路径
--core-file-size mysqld 应该能够创建的核心文件的大小
--datadir 数据目录的路径
--defaults-extra-file 除常规选项文件外,还读取命名的选项文件
--defaults-file 只读命名的选项文件
--help 显示帮助信息并退出
--ledir 服务器所在目录的路径
--log-error 将错误日志写入命名文件
--malloc-lib 用于 mysqld 的备用 malloc 库
--mysqld 要启动的服务器程序的名称(在 ledir 目录中)
--mysqld-safe-log-timestamps 日志记录的时间戳格式 5.7.11
--mysqld-version 服务器程序名称的后缀
--nice 使用漂亮的程序设置服务器调度优先级
--no-defaults 不读取选项文件
--open-files-limit mysqld 应该可以打开的文件数
--pid-file 服务器进程标识文件的路径名
--plugin-dir 安装插件的目录
--port 侦听 TCP/IP 连接的端口号
--skip-kill-mysqld 不要试图杀死流离失所的 mysqld 进程
--skip-syslog 不要将错误消息写入 syslog;使用错误日志文件 Yes
--socket 侦听 Unix 套接字连接的套接字文件
--syslog 将错误消息写入系统日志 Yes
--syslog-tag 标记后缀,用于写入系统日志的消息 Yes
--timezone 将 TZ 时区环境变量设置为命名值
--user 以具有名称 user_name 或数字用户 ID user_id 的用户身份运行 mysqld

mysql.server:MySQL服务器启动脚本

Unix 和类似 Unix 的系统上的 MySQL 发行版包含一个名为mysql.server的脚本,该脚本使用mysqld_safe启动 MySQL 服务器。

它可以在使用 System V 样式的运行目录来启动和停止系统服务的系统(例如 Linux 和 Solaris)上使用。

适用于 MySQL 的 macOS 启动项也使用它。
  • 对于某些 Linux 平台,从 RPM 或 Debian 软件包安装的 MySQL 包括对 ManagementMySQL 服务器启动和关闭的系统支持。在这些平台上,未安装mysql.server和mysqld_safe,因为它们是不必要的。


mysql.server 是在 MySQL 源代码树中使用的脚本名称。安装的名称可能不同(例如mysqld或mysql)。在下面的讨论中,根据您的系统调整名称mysql.server。

mysql.server将位置更改为 MySQL 安装目录,然后调用mysqld_safe。要以某些特定用户身份运行服务器,请将适当的user选项添加到全局/etc/my.cnf选项文件的[mysqld]组中。(如果在非标准位置安装了 MySQL 的二进制发行版,则可能必须编辑mysql.server。修改它以在运行mysqld_safe之前将位置更改为正确的目录。如果执行此操作,则mysql.server的修改后的版本可能需要在以后升级 MySQL 时被覆盖;请复制您可以重新安装的编辑版本。)


要使用mysql.server脚本手动启动或停止服务器,请从命令行使用start或stop参数调用它:

shell> mysql.server start
shell> mysql.server stop
  • “mysql.server stop”通过向服务器发送 signal 来停止服务器。您也可以通过执行“mysqladmin shutdown”手动停止服务器。
  • 要在服务器上自动启动和停止 MySQL,必须在/etc/rc*文件中的适当位置添加启动和停止命令:
    1. 如果您使用 Linux 服务器 RPM 软件包(“MySQL-server-VERSION.rpm”)或本地 Linux 软件包安装,则mysql.server脚本可能以mysqldmysql的名称安装在/etc/init.d目录中。
    2. 如果从源代码发行版安装 MySQL 或使用不会自动安装mysql.server的二进制发行版格式,则可以手动安装脚本。可以在 MySQL 安装目录下的support-files目录中或 MySQL 源代码树中找到它。将脚本复制到名称为mysql的/etc/init.d目录并使其可执行:
      shell> cp mysql.server /etc/init.d/mysql
      shell> chmod +x /etc/init.d/mysql
      


安装脚本后,激活脚本以在系统启动时运行所需的命令取决于您的 os:

  1. 在 Linux 上,您可以使用chkconfig
    shell> chkconfig --add mysql
    
  2. 在某些 Linux 系统上,似乎也需要以下命令来完全启用mysql脚本:
    shell> chkconfig --level 345 mysql on
    
  3. 在 FreeBSD 上,启动脚本通常应放在/usr/local/etc/rc.d/中。将mysql.server脚本安装为/usr/local/etc/rc.d/mysql.server.sh以启用自动启动。rc(8)手册页指出,仅当其基本名称与*.sh shell 文件名模式匹配时,才会执行此目录中的脚本。目录中存在的任何其他文件或目录都将被静默忽略。
  4. 作为上述设置的替代方法,某些 os 还使用/etc/rc.local/etc/init.d/boot.local在启动时启动其他服务。要使用此方法启动 MySQL,请将以下命令添加到适当的启动文件中:
    /bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
    
  5. 对于其他系统,请查阅 os 说明文件以了解如何安装启动脚本。


mysql.server从选项文件的[mysql.server][mysqld]部分中读取选项。

  • 为了向后兼容,它还会读取[mysql_server]部分,但为最新,您应将此类部分重命名为[mysql.server]。

可以在全局/etc/my.cnf文件中为mysql.server添加选项。典型的my.cnf文件可能如下所示:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql


mysql.server脚本支持下 table 中显示的选项:

  • (如果指定,则必须将它们放置在选项文件中,而不是在命令行中。mysql.server仅支持start和stop作为命令行参数)
Option Name Description Type
basedir MySQL 安装目录的路径 Directory name
datadir MySQL 数据目录的路径 Directory name
pid-file 服务器应在其中写入其进程 ID 的文件 File name
service-startup-timeout await 服务器启动的时间 Integer

mysqld_multi:管理多个MySQL服务器

Client端程序