文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  mysqld_multi — 管理多个 MySQL 服务器

6.3.4 mysqld_multi — 管理多个 MySQL 服务器

mysqld_multi 旨在管理多个 mysqld 进程,这些进程监听不同 Unix 套接字文件和 TCP/IP 端口上的连接。它可以启动或停止服务器,或报告其当前状态。

注意

对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括对管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上,mysqld_multi 未安装,因为它是不必要的。有关使用 systemd 处理多个 MySQL 实例的信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”

mysqld_multimy.cnf(或 --defaults-file 选项命名的文件中)中搜索名为 [mysqldN] 的组。N 可以是任何正整数。此数字在下文中称为选项组号,或 GNR。组号用于区分选项组,并用作 mysqld_multi 的参数,以指定要启动、停止或获取其状态报告的服务器。这些组中列出的选项与您在用于启动 mysqld[mysqld] 组中使用的选项相同。(例如,请参阅 第 2.9.5 节,“自动启动和停止 MySQL”。)但是,在使用多个服务器时,每个服务器必须对 Unix 套接字文件和 TCP/IP 端口号等选项使用自己的值。有关在多服务器环境中每个服务器必须唯一的选项的更多信息,请参阅 第 7.8 节,“在一台机器上运行多个 MySQL 实例”

要调用 mysqld_multi,请使用以下语法

mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

startstopreload(停止并重新启动)和 report 指示要执行的操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于选项名称后面的 GNR 列表。如果没有列表,mysqld_multi 将对选项文件中的所有服务器执行该操作。

每个 GNR 值表示一个选项组号或组号范围。该值应为选项文件中组名末尾的数字。例如,名为 [mysqld17] 的组的 GNR17。要指定一个数字范围,请用短划线分隔第一个和最后一个数字。GNR10-13 表示从 [mysqld10][mysqld13] 的组。可以在命令行中指定多个组或组范围,并用逗号分隔。GNR 列表中不能有空格字符(空格或制表符);空格字符后面的任何内容都将被忽略。

此命令使用选项组 [mysqld17] 启动单个服务器

mysqld_multi start 17

此命令停止多个服务器,使用选项组 [mysqld8] 以及从 [mysqld10][mysqld13] 的组

mysqld_multi stop 8,10-13

有关如何设置选项文件的示例,请使用以下命令

mysqld_multi --example

mysqld_multi 按如下方式搜索选项文件

  • 使用 --no-defaults 时,不会读取任何选项文件。

    命令行格式 --no-defaults
    类型 布尔值
    默认值 false
  • 使用 --defaults-file=file_name 时,仅读取命名的文件。

    命令行格式 --defaults-file=filename
    类型 文件名
    默认值 [无]
  • 否则,将读取标准位置列表中的选项文件,包括 --defaults-extra-file=file_name 选项命名的任何文件(如果给出)。(如果多次给出该选项,则使用最后一个值。)

    命令行格式 --defaults-extra-file=filename
    类型 文件名
    默认值 [无]

有关这些选项和其他选项文件选项的更多信息,请参阅 第 6.2.2.3 节,“影响选项文件处理的命令行选项”

将搜索读取的选项文件以查找 [mysqld_multi][mysqldN] 选项组。[mysqld_multi] 组可用于 mysqld_multi 本身的选项。[mysqldN] 组可用于传递给特定 mysqld 实例的选项。

[mysqld][mysqld_safe] 组可用于所有 mysqldmysqld_safe 实例读取的通用选项。您可以指定 --defaults-file=file_name 选项,以便为该实例使用不同的配置文件,在这种情况下,将使用该文件中 [mysqld][mysqld_safe] 组中的选项。

mysqld_multi 支持以下选项。

  • --help

    命令行格式 --help
    类型 布尔值
    默认值 false

    显示帮助消息并退出。

  • --example

    命令行格式 --example
    类型 布尔值
    默认值 false

    显示示例选项文件。

  • --log=file_name

    命令行格式 --log=路径
    类型 文件名
    默认值 /var/log/mysqld_multi.log

    指定日志文件的名称。如果文件存在,则将日志输出追加到该文件。

  • --mysqladmin=prog_name

    命令行格式 --mysqladmin=文件
    类型 文件名
    默认值 [无]

    用于停止服务器的 mysqladmin 二进制文件。

  • --mysqld=prog_name

    命令行格式 --mysqld=文件
    类型 文件名
    默认值 [无]

    要使用的 mysqld 二进制文件。请注意,您也可以指定 mysqld_safe 作为此选项的值。如果您使用 mysqld_safe 启动服务器,则可以在相应的 [mysqldN] 选项组中包含 mysqldledir 选项。这些选项指示 mysqld_safe 应启动的服务器的名称以及服务器所在目录的路径名。(请参阅 第 6.3.2 节“mysqld_safe — MySQL 服务器启动脚本” 中有关这些选项的说明。)示例

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
  • --no-log

    命令行格式 --no-log
    类型 布尔值
    默认值 false

    将日志信息打印到 stdout 而不是日志文件。默认情况下,输出将发送到日志文件。

  • --password=password

    命令行格式 --password=字符串
    类型 字符串
    默认值 [无]

    调用 mysqladmin 时要使用的 MySQL 帐户的密码。请注意,与其他 MySQL 程序不同,此选项的密码值不是可选的。

  • --silent

    命令行格式 --silent
    类型 布尔值
    默认值 false

    静默模式;禁用警告。

  • --tcp-ip

    命令行格式 --tcp-ip
    类型 布尔值
    默认值 false

    通过 TCP/IP 端口而不是 Unix 套接字文件连接到每个 MySQL 服务器。(如果缺少套接字文件,则服务器可能仍在运行,但只能通过 TCP/IP 端口访问。)默认情况下,使用 Unix 套接字文件进行连接。此选项会影响 stopreport 操作。

  • --user=user_name

    命令行格式 --user=名称
    类型 字符串
    默认值 root

    调用 mysqladmin 时要使用的 MySQL 帐户的用户名。

  • --verbose

    命令行格式 --verbose
    类型 布尔值
    默认值 false

    更加详细。

  • --version

    命令行格式 --version
    类型 布尔值
    默认值 false

    显示版本信息并退出。

有关 mysqld_multi 的一些注意事项

  • 最重要的一点:在使用 mysqld_multi 之前,请确保您了解传递给 mysqld 服务器的选项的含义,以及 为什么 您需要单独的 mysqld 进程。请注意使用具有相同数据目录的多个 mysqld 服务器的危险。使用单独的数据目录,除非您 知道 自己在做什么。在多线程系统中,启动具有相同数据目录的多个服务器 不会 提高性能。请参阅 第 7.8 节“在一台机器上运行多个 MySQL 实例”

    重要

    确保每个服务器的数据目录对于启动特定 mysqld 进程的 Unix 帐户完全可访问。 不要 为此使用 Unix root 帐户,除非您 知道 自己在做什么。请参阅 第 8.1.5 节“如何以普通用户身份运行 MySQL”

  • 确保用于停止 mysqld 服务器(使用 mysqladmin 程序)的 MySQL 帐户对于每个服务器都具有相同的用户名和密码。此外,请确保该帐户具有 SHUTDOWN 权限。如果您要管理的服务器的管理帐户具有不同的用户名或密码,则可能需要在每个服务器上创建一个具有相同用户名和密码的帐户。例如,您可以通过为每个服务器执行以下命令来设置一个通用的 multi_admin 帐户

    $> mysql -u root -S /tmp/mysql.sock -p
    Enter password:
    mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';

    请参阅 第 8.2 节“访问控制和帐户管理”。您必须为每个 mysqld 服务器执行此操作。连接到每个服务器时,请适当地更改连接参数。请注意,帐户名称的主机名部分必须允许您从要运行 mysqld_multi 的主机以 multi_admin 身份连接。

  • 每个 mysqld 的 Unix 套接字文件和 TCP/IP 端口号必须不同。(或者,如果主机有多个网络地址,则可以设置 bind_address 系统变量,以使不同的服务器监听不同的接口。)

  • 如果您正在使用 mysqld_safe 启动 mysqld(例如,--mysqld=mysqld_safe),则 --pid-file 选项非常重要。每个 mysqld 都应该有自己的进程 ID 文件。使用 mysqld_safe 而不是 mysqld 的优点是 mysqld_safe 会监视其 mysqld 进程,并在该进程由于使用 kill -9 发送的信号或其他原因(例如段错误)而终止时重新启动它。

  • 您可能希望对 mysqld 使用 --user 选项,但要做到这一点,您需要以 Unix 超级用户(root)身份运行 mysqld_multi 脚本。在选项文件中使用该选项并不重要;如果您不是超级用户,并且 mysqld 进程是在您自己的 Unix 帐户下启动的,则只会收到警告。

以下示例显示了如何设置用于 mysqld_multi 的选项文件。 mysqld 程序的启动或停止顺序取决于它们在选项文件中出现的顺序。组号不需要形成不间断的序列。示例中有意省略了第一个和第五个 [mysqldN] 组,以说明您可以在选项文件中留有 间隔。这为您提供了更大的灵活性。

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf

[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = multi_admin
password   = my_password

[mysqld2]
socket     = /tmp/mysql.sock2
port       = 3307
pid-file   = /usr/local/mysql/data2/hostname.pid2
datadir    = /usr/local/mysql/data2
language   = /usr/local/mysql/share/mysql/english
user       = unix_user1

[mysqld3]
mysqld     = /path/to/mysqld_safe
ledir      = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket     = /tmp/mysql.sock3
port       = 3308
pid-file   = /usr/local/mysql/data3/hostname.pid3
datadir    = /usr/local/mysql/data3
language   = /usr/local/mysql/share/mysql/swedish
user       = unix_user2

[mysqld4]
socket     = /tmp/mysql.sock4
port       = 3309
pid-file   = /usr/local/mysql/data4/hostname.pid4
datadir    = /usr/local/mysql/data4
language   = /usr/local/mysql/share/mysql/estonia
user       = unix_user3

[mysqld6]
socket     = /tmp/mysql.sock6
port       = 3311
pid-file   = /usr/local/mysql/data6/hostname.pid6
datadir    = /usr/local/mysql/data6
language   = /usr/local/mysql/share/mysql/japanese
user       = unix_user4

请参阅 第 6.2.2.2 节“使用选项文件”