mysqld_multi用于管理多个mysqld进程,这些 进程侦听不同Unix套接字文件和TCP / IP端口上的连接。它可以启动或停止服务器,或报告其当前状态。
注意
对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上, 未安装mysqld_multi,因为它是不必要的。有关使用systemd处理多个MySQL实例的信息,请参见第2.5.9节“使用systemd管理MySQL Server”。
mysqld_multi的搜索命名组 中 (或由指定的文件中 选择)。 可以是任何正整数。在下面的讨论中,此编号称为选项组编号或。组号将选项组彼此区分开,并用作mysqld_multi的参数,以指定要启动,停止或获取状态报告的服务器。这些组中列出的选项与用于启动mysqld的组中使用的 选项相同。(例如,请参见 第2.10.5节“自动启动和停止MySQL”[mysqld*
N*]``my.cnf
--defaults-file
N
**GNR
[mysqld]
。)但是,当使用多台服务器时,每个服务器都必须使用自己的值作为选项,例如Unix套接字文件和TCP / IP端口号。有关在多服务器环境中每个服务器上哪些选项必须唯一的更多信息,请参见 第5.8节“在一台计算机上运行多个MySQL实例”。
要调用mysqld_multi,请使用以下语法:
shell> 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]
:
shell> mysqld_multi start 17
复制
该命令使用选项组[mysqld8]
并[mysqld10]
通过[mysqld13]
以下命令停止多个服务器 :
shell> mysqld_multi stop 8,10-13
复制
有关如何设置选项文件的示例,请使用以下命令:
shell> mysqld_multi --example
复制
mysqld_multi搜索选项文件,如下所示:
-
使用
--no-defaults
,不读取任何选项文件。 -
使用 ,仅读取命名的文件。
--defaults-file=*
file_name*
-
否则,将读取标准位置列表中的选项文件,包括由 选项命名的任何文件 (如果已指定)。(如果多次给出该选项,则使用最后一个值。)
--defaults-extra-file=*
file_name*
有关这些选项文件选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”。
搜索已读取的选项文件 [mysqld_multi]
和 选项组。该组可用于mysqld_multi本身的选项。 组可用于传递给特定mysqld实例的选项 。 [mysqld*
N*]``[mysqld_multi]``[mysqld*
N*]
该[mysqld]
或 [mysqld_safe]
团体可用于通过的所有实例读取常用选项的mysqld或 mysqld_safe的。您可以指定一个 选项以对该实例使用其他配置文件,在这种情况下,该文件中的或 组将用于该实例。 --defaults-file=*
file_name*
[mysqld]``[mysqld_safe]
mysqld_multi支持以下选项。
-
显示帮助消息并退出。
-
显示样本选项文件。
-
指定日志文件的名称。如果文件存在,则将日志输出附加到该文件。
-
用于停止服务器 的mysqladmin二进制文件。
-
要使用 的mysqld二进制文件。注意,您也可以指定mysqld_safe作为此选项的值。如果使用 mysqld_safe启动服务器,则可以在相应的 选项组中包括
mysqld
或ledir
选项 。这些选项指示mysqld_safe应该启动的服务器的名称以及该服务器所在目录的路径名称。(请参见第4.3.2节“ mysqld_safe -MySQL服务器启动脚本”中对这些选项的描述 。)示例:[mysqld*
N*]
[mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
复制 -
将日志信息打印到
stdout
而不是打印到日志文件。默认情况下,输出进入日志文件。 -
调用mysqladmin时要使用的MySQL帐户的密码 。请注意,与其他MySQL程序不同,此选项的密码值不是可选的。
-
静音模式; 禁用警告。
-
通过TCP / IP端口而不是Unix套接字文件连接到每个MySQL服务器。(如果缺少套接字文件,则服务器可能仍在运行,但只能通过TCP / IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响
stop
和report
操作。 -
调用mysqladmin时要使用的MySQL帐户的用户名 。
-
更加冗长。
-
显示版本信息并退出。
有关mysqld_multi的一些说明:
-
最重要的是:在使用mysqld_multi之前,请确保您了解传递给mysqld服务器的选项的含义以及 为什么要拥有单独的 mysqld进程。注意使用具有相同数据目录的多个mysqld服务器的危险。除非您知道自己在做什么,否则请使用单独的数据目录。开始用相同的数据目录的多台服务器并 没有给你一个线程系统额外的性能。看到第5.8节“在一台机器上运行多个MySQL实例”。
重要
确保启动特定mysqld进程的Unix帐户可以完全访问每个服务器的数据目录 。 除非您知道自己在做什么,否则*不要**
root
*为此使用Unix 帐户。请参见 第6.1.5节“如何以普通用户身份运行MySQL”。 -
确保用于停止mysqld服务器(使用 mysqladmin程序)的MySQL帐户 具有与每个服务器相同的用户名和密码。另外,请确保该帐户具有
SHUTDOWN
特权。如果要管理的服务器的管理帐户使用不同的用户名或密码,则可能要在每台具有相同用户名和密码的服务器上创建一个帐户。例如,您可以multi_admin
通过对每个服务器执行以下命令来设置公共帐户:shell> 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';
复制请参见第6.2节“访问控制和帐户管理”。您必须为每个mysqld服务器执行此操作。连接到每个连接参数时,请适当更改连接参数。请注意,帐户名的主机名部分必须允许您
multi_admin
从要运行mysqld_multi的主机 进行连接。 -
每个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_safe会重启该进程。 -
您可能要
--user
对mysqld使用该 选项 ,但是要执行此操作,您需要以Unix超级用户()的身份运行mysqld_multi脚本root
。在选项文件中包含选项无关紧要;如果您不是超级用户,并且 仅在您自己的Unix帐户下启动mysqld进程,则只会收到警告。
以下示例说明如何设置与mysqld_multi一起使用的选项文件。其中顺序mysqld的程序被启动或停止取决于它们出现在选项文件的顺序。组号不必形成连续的序列。 示例中有意省略了第一组和第五组,以说明选项文件中可以包含“ gap ”。这为您提供了更大的灵活性。 [mysqld*
N*]
# 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
复制