mysqld_multi设计来管理几个mysqld监听不同Unix套接字文件和TCP/IP端口上的连接的进程。它可以启动或停止服务器,或者报告服务器的当前状态。
对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。在这些平台上,mysqld_multi没有安装,因为它是不必要的。有关使用systemd处理多个MySQL实例的信息,请参见第2.5.9节,“使用systemd管理MySQL服务器”。
mysqld_multi搜索名称为(mysqld
在N
]my.cnf
(或在由——defaults-file
选项)。N
可以是任意正整数。这个数字在下面的讨论中被称为选项组号,或者GNR
。组号用于区分选项组和其他选项组,并用作参数mysqld_multi指定要启动、停止或获取其状态报告的服务器。列表中列出的选项与您在(mysqld)
启动组mysqld。(例如,第2.10.5节,“自动启动和停止MySQL”)。但是,当使用多个服务器时,每个服务器都必须使用自己的选项值,例如Unix套接字文件和TCP/IP端口号。有关在多服务器环境中每个服务器必须唯一的选项的详细信息,请参见第5.8节“在一台机器上运行多个MySQL实例”。
调用mysqld_multi,使用以下语法:
mysqld_multi [选项{启动|停止|重新加载|报告}[GNR(,GNR]…]
开始
,停止
,重新加载
(停止和重新启动),和报告
指示要执行的操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于GNR
选项名称后面的列表。如果没有列表,mysqld_multi对option文件中的所有服务器执行该操作。
每一个GNR
值表示选项组号或组号范围。该值应该是选项文件中组名末尾的数字。例如,GNR
对于一个名为(mysqld17)
是17
。要指定一个数字范围,用破折号分隔第一个和最后一个数字。的GNR
价值10 - 13
代表集团(mysqld10)
通过(mysqld13)
。可以在命令行上指定多个组或组范围,以逗号分隔。中不能有空白字符(空格或制表符)GNR
列表;空白字符之后的任何内容都将被忽略。
该命令使用选项组启动单个服务器(mysqld17)
:
Mysqld_multi start
该命令使用选项组停止多个服务器(mysqld8)
和(mysqld10)
通过(mysqld13)
:
Mysqld_multi停止8,10-13
关于如何设置选项文件的示例,使用以下命令:
mysqld_multi——示例
mysqld_multi搜索选项文件的方法如下:
与
——已
,则不读取任何选项文件。与
——defaults-file =
,只读取命名文件。file_name
否则,将读取标准位置列表中的选项文件,包括由
——defaults-extra-file =
选项,如果有的话。(如果多次给出该选项,则使用最后一个值。)file_name
有关这些选项和其他选项文件选项的其他信息,请参见节4.2.2.3,“影响选项文件处理的命令行选项”。
搜索已读的选项文件(mysqld_multi)
和(mysqld
选项组。的N
](mysqld_multi)
组可用于选项mysqld_multi本身。(mysqld
组可用于传递给特定对象的选项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
选项组。这些选项指示要使用的服务器的名称mysqld_safe应该启动和服务器所在目录的路径名。(参见中对这些选项的描述第4.3.2节," mysqld_safe - MySQL服务器启动脚本")。例子:N
][mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
将日志信息打印到
stdout
而不是到日志文件。默认情况下,输出到日志文件。调用时使用的MySQL帐户的密码mysqladmin。请注意,与其他MySQL程序不同,此选项的密码值不是可选的。
静默模式;禁用警告。
通过TCP/IP端口而不是Unix套接字文件连接到每个MySQL服务器。(如果套接字文件丢失,服务器可能仍在运行,但只能通过TCP/IP端口访问。)默认情况下,使用Unix套接字文件进行连接。这个选项会影响
停止
和报告
操作。调用时使用的MySQL帐户的用户名mysqladmin。
更啰嗦。
显示版本信息并退出。
一些关于mysqld_multi:
最重要的是:使用前mysqld_multi方法传递的选项的含义mysqld服务器和为什么你会想要分开mysqld流程。注意使用多个的危险mysqld具有相同数据目录的服务器。使用单独的数据目录,除非您知道你在做什么。使用相同的数据目录启动多个服务器就可以了不在线程系统中提供额外的性能。看到第5.8节“在一台机器上运行多个MySQL实例”。
重要的确保每个服务器的数据目录可以被指定的Unix帐户完全访问mysqld进程启动为。不使用Unix
根
解释一下,除非你知道你在做什么。看到第6.1.5节,“如何作为普通用户运行MySQL”。请确保用于停止MySQL的MySQL帐户mysqld服务器(带有mysqladmin程序)对每个服务器具有相同的用户名和密码。此外,请确保该帐户具有
关闭
特权。如果要管理的服务器的管理帐户具有不同的用户名或密码,则可能需要在每个服务器上创建具有相同用户名和密码的帐户。例如,您可以设置一个公共的multi_admin
通过在每个服务器上执行以下命令来创建帐户:shell> mysql -u root -S /tmp/mysql。mysql b>创建用户'multi_admin'@'localhost' IDENTIFIED BY 'multipass';mysql>授权关闭*。* TO 'multi_admin'@'localhost';
看到第6.2节“访问控制和帐户管理”。你必须对每一个都这样做mysqld服务器。在连接到每个节点时,请适当更改连接参数。请注意,帐户名的主机名部分必须允许您以
multi_admin
从您想要运行的主机mysqld_multi。Unix套接字文件和TCP/IP端口号必须不同mysqld。(或者,如果主机有多个网络地址,也可以设置
bind_address
系统变量,使不同的服务器监听不同的接口。)的
——pid文件
选项是非常重要的,如果你使用mysqld_safe开始mysqld(例如,——mysqld = mysqld_safe
)每mysqld应该有自己的进程ID文件。使用的优势mysqld_safe而不是mysqld是,mysqld_safe监控其mysqld进程,如果进程由于使用发送的信号而终止,则重新启动它kill - 9
或者由于其他原因,例如分段错误。你可能想用
——用户
选择mysqld,但要做到这一点,你需要运行mysqld_multi以Unix超级用户(根
)。在选项文件中拥有选项并不重要;如果你不是超级用户,你会得到一个警告mysqld进程在您自己的Unix帐户下启动。
下面的示例展示了如何设置一个选项文件以使用mysqld_multi。的顺序mysqld程序的启动或停止取决于它们在选项文件中出现的顺序。群号不必形成不间断的序列。第一和第五(mysqld
在示例中故意省略了组,以说明您可以拥有”差距”在选项文件中。这给了你更多的灵活性。N
]
这是一个mysqld_multi的my.cnf文件的例子。#通常该文件位于home dir ~/.my.cnf或/etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld_safe mysqladmin = /usr/local/mysql/bin/mysqladmin用户= multi_admin密码= my_password [mysqld2] socket = /tmp/mysql。Sock2端口= 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/ mysqldd -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/爱沙尼亚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