mysqld_multi旨在管理多个 mysqld进程,这些进程监听不同 Unix 套接字文件和 TCP/IP 端口上的连接。它可以启动或停止服务器,或报告其当前状态。
笔记
对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括 systemd 支持,用于管理 MySQL 服务器的启动和关闭。在这些平台上, mysqld_multi未安装,因为它是不必要的。有关使用 systemd 处理多个 MySQL 实例的信息,请参见第 2.5.9 节“使用 systemd 管理 MySQL 服务器”。
mysqld_multi搜索中 指定的组 (或由选项指定的文件中的 )。 可以是任何正整数。在以下讨论中,此数字称为选项组号或。组号将选项组彼此区分开来,并用作mysqld_multi的参数,以指定要启动、停止或获取状态报告的服务器。这些组中列出的选项与用于启动 mysqld 的组中使用的选项相同。(例如,请参见 第 2.9.5 节“自动启动和停止 MySQL”[mysqldN]my.cnf--defaults-fileNGNR[mysqld]。)但是,当使用多台服务器时,每台服务器都必须使用自己的选项值,例如 Unix 套接字文件和 TCP/IP 端口号。有关多服务器环境中每台服务器必须唯一的选项的更多信息,请参见 第 7.8 节“在一台机器上运行多个 MySQL 实例”。
要调用mysqld_multi,请使用以下语法:
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
start、stop、 reload(停止并重新启动),并 report指示要执行的操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于 GNR选项名称后面的列表。如果没有列表,mysqld_multi 将对选项文件中的所有服务器执行操作。
每个GNR值代表一个选项组号或组号范围。该值应为选项文件中组名末尾的数字。例如,GNR名为 的组的 为 [mysqld17]。17要指定数字范围,请用破折号分隔第一个和最后一个数字。该GNR值 代表到 的 10-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
类型 文件名
默认值 [none]
否则,将读取标准位置列表中的选项文件,包括由选项命名的任何文件 (如果给出)。(如果多次给出该选项,则使用最后一个值。) --defaults-extra-file=file_name
命令行格式 --defaults-extra-file=filename
类型 文件名
默认值 [none]
有关这些选项和其他选项文件选项的更多信息,请参见第 6.2.2.3 节“影响选项文件处理的命令行选项”。
搜索读取的选项文件 [mysqld_multi]和 选项组。组可用于mysqld_multi本身的选项。 组可用于传递给特定 mysqld实例的选项。 [mysqldN][mysqld_multi][mysqldN]
[mysqld]或 组[mysqld_safe]可用于所有mysqld或 mysqld_safe实例读取的通用选项。您可以指定一个 选项来为该实例使用不同的配置文件,在这种情况下,该文件中的或 组将用于该实例。 --defaults-file=file_name[mysqld][mysqld_safe]
mysqld_multi支持以下选项。
--help
命令行格式 --help
类型 布尔值
默认值 false
显示帮助信息并退出。
--example
命令行格式 --example
类型 布尔值
默认值 false
显示示例选项文件。
--log=file_name
命令行格式 --log=path
类型 文件名
默认值 /var/log/mysqld_multi.log
指定日志文件的名称。如果文件存在,则日志输出将附加到该文件。
--mysqladmin=prog_name
命令行格式 --mysqladmin=file
类型 文件名
默认值 [none]
用于停止服务器的 mysqladmin 二进制文件。
--mysqld=prog_name
命令行格式 --mysqld=file
类型 文件名
默认值 [none]
要使用的mysqld二进制 文件。请注意,您也可以指定mysqld_safe作为此选项的值。如果您使用 mysqld_safe启动服务器,则可以在相应的选项组中 包括mysqld或 选项。这些选项指示mysqld_safe应启动的 服务器的名称以及服务器所在目录的路径名。(请参阅第 6.3.2 节“mysqld_safe — MySQL 服务器启动脚本”中对这些选项的描述 。)示例: ledir[mysqldN]
[mysqld38]
mysqld = mysqld-debug
ledir = /opt/local/mysql/libexec
--no-log
命令行格式 --no-log
类型 布尔值
默认值 false
将日志信息打印到日志文件中,stdout而不是日志文件中。默认情况下,输出到日志文件。
--password=password
命令行格式 --password=string
类型 细绳
默认值 [none]
调用mysqladmin 时要使用的 MySQL 帐户的密码 。请注意,与其他 MySQL 程序不同,此选项的密码值不是可选的。
--silent
命令行格式 --silent
类型 布尔值
默认值 false
静音模式;禁用警告。
--tcp-ip
命令行格式 --tcp-ip
类型 布尔值
默认值 false
通过 TCP/IP 端口而不是 Unix 套接字文件连接到每个 MySQL 服务器。(如果缺少套接字文件,服务器可能仍在运行,但只能通过 TCP/IP 端口访问。)默认情况下,使用 Unix 套接字文件进行连接。此选项会影响 stop和report 操作。
--user=user_name
命令行格式 --user=name
类型 细绳
默认值 root
调用mysqladmin 时使用的 MySQL 帐户的用户名 。
--verbose
命令行格式 --verbose
类型 布尔值
默认值 false
更加详细一些。
--version
命令行格式 --version
类型 布尔值
默认值 false
显示版本信息并退出。
关于mysqld_multi 的 一些注意事项:
最重要的是:在使用mysqld_multi之前,请确保您了解传递给mysqld服务器的选项的含义以及 为什么要有单独的 mysqld进程。请注意使用具有相同数据目录的多个mysqld服务器的危险。使用单独的数据目录,除非您知道自己在做什么。 在线程系统中,使用相同的数据目录启动多个服务器不会给您带来额外的性能。请参阅第 7.8 节 “在一台机器上运行多个 MySQL 实例”。
重要的
确保每个服务器的数据目录对于 启动 特定mysqld进程的 Unix 帐户而言都是完全可访问的。除非您知道自己在做什么 ,否则不要root为此使用 Unix 帐户。请参见第 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_multimulti_admin的主机 进行连接。
每个mysqld 的 Unix 套接字文件和 TCP/IP 端口号必须不同。(或者,如果主机有多个网络地址,则可以设置 bind_address系统变量以使不同的服务器监听不同的接口。)
--pid-file如果您使用 mysqld_safe启动 mysqld(例如 ), 则该选项非常重要。--mysqld=mysqld_safe每个mysqld都应该有自己的进程 ID 文件。使用 mysqld_safe代替 mysqld的优点是, mysqld_safe监视其 mysqld进程,如果进程由于使用 发送的信号kill -9或其他原因(如分段错误)而终止,则重新启动它。
您可能希望使用 mysqld--user的选项 ,但要做到这一点,您需要以 Unix 超级用户的身份运行mysqld_multi脚本 ( )。选项文件中有该选项并不重要;如果您不是超级用户并且mysqld 进程在您自己的 Unix 帐户下启动, 您只会收到警告。root
以下示例显示如何设置与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 节“使用选项文件”。