Mysqld multi:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
mysqld_multi是设计用于管理在不同的Unix套接字文件和TCP/IP端口上监听连接的多个mysqld进程的工具。它可以启动或停止服务器,或者报告它们的当前状态。 | |||
''''使用注意点:'''' | |||
#一般情况下不要为多MySql服务器配置相同的数据目录。 | |||
#确保用于多MySql服务器的MySql停止服务账号的账号和密码一致。 | |||
#每个MySql服务器的套接字与端口必须不一致。 | |||
#使用独立的进程文件对于安全启动MySql服务器很重要。 | |||
注意: | |||
对于某些Linux平台,通过RPM或Debian软件包安装MySQL时已经包含了systemd支持,用于管理MySQL服务器的启动和关闭。在这些平台上,不需要安装mysqld_multi。 | |||
mysqld_multi在my.cnf中(或由--defaults-file选项指定的文件中)搜索名为[mysqldN]的组。N可以是任何正整数。本文后续讨论中将称此数字为选项组编号(GNR)。组编号用于区分不同的选项组,并作为参数传递给mysqld_multi,以指定您要启动、停止或获取状态报告的服务器。这些组中列出的选项与您在用于启动mysqld的[mysqld]组中使用的选项相同。然而,在使用多个服务器时,每个服务器都必须使用其自己的选项值,例如Unix套接字文件和TCP/IP端口号等。 | |||
要调用mysqld_multi,请使用以下语法: | |||
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...] | mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...] | ||
start、stop、reload(停止并重新启动)和report指示要执行的操作。您可以针对单个服务器或多个服务器执行指定操作,具体取决于后跟选项名称的GNR列表。如果没有列表,则mysqld_multi会在选项文件中为所有服务器执行该操作。 | |||
每个GNR值代表一个选项组编号或一系列连续的组编号。该值应为选项文件中组名末尾的数字。例如,组名为[mysqld17]的GNR为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 --example | ||
=== | mysqld_multi按照以下方式搜索选项文件: | ||
# | |||
# | 使用--no-defaults参数时,不会读取任何选项文件。 | ||
使用--defaults-file=file_name参数时,仅读取指定的文件。 | |||
否则,将读取标准位置上的选项文件列表,包括由--defaults-extra-file=file_name参数指定的任何文件(如果有多个相同参数,则使用最后一个值)。 | |||
有关这些和其他选项文件选项的详细信息,请参见4.2.2.3节“影响选项文件处理的命令行参数”。 | |||
被读取的选项文件在[mysqld_multi]和[mysqldN]选项组中搜索。 [mysqld_multi]组可用于mysqld_multi本身的选项。 [mysqldN]组可用于传递给特定mysqld实例的选项。 | |||
[mysqld]或[mysqld_safe]组可用于所有mysqld或mysqld_safe实例共同读取的常用选项。您可以通过指定--defaults-file=file_name选项来为该实例使用不同的配置文件,在这种情况下,该文件中的[mysqld]或[mysqld_safe]组将用于该实例。 | |||
mysqld_multi支持以下选项。 | |||
--help | |||
显示帮助消息并退出。 | |||
--example | |||
显示示例选项文件。 | |||
--log=file_name | |||
指定日志文件的名称。如果文件存在,则将日志输出追加到其中。 | |||
--mysqladmin=prog_name | |||
用于停止服务器的mysqladmin二进制文件。 | |||
--mysqld=prog_name | |||
要使用的mysqld二进制文件。请注意,您还可以将mysqld_safe作为此选项的值。如果使用mysqld_safe启动服务器,则可以在对应的[mysqldN]选项组中包含mysqld或ledir选项。这些选项指示mysqld_safe应启动的服务器的名称和服务器所在目录的路径名。 (请参阅第4.3.2节“mysqld_safe —— MySQL服务器启动脚本”中有关这些选项的描述。)示例: | |||
[mysqld38] | |||
mysqld = mysqld-debug | |||
ledir = /opt/local/mysql/libexec | |||
--no-log | |||
将日志信息打印到标准输出而不是日志文件中。默认情况下,输出会写入日志文件。 | |||
--password=password | |||
在调用mysqladmin时使用的MySQL账户的密码。与其他MySQL程序不同,此选项的密码值是必需的。 | |||
--silent | |||
静默模式;禁用警告。 | |||
--tcp-ip | |||
通过TCP/IP端口连接到每个MySQL服务器,而不是Unix套接字文件。(如果套接字文件丢失,服务器可能仍在运行,但只能通过TCP/IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响停止和报告操作。 | |||
--user=user_name | |||
在调用mysqladmin时使用的MySQL账户的用户名。 | |||
--verbose | |||
增加详细输出。 | |||
--version | |||
显示版本信息并退出。 | |||
关于mysqld_multi的一些注意事项: | |||
最重要的是:在使用mysqld_multi之前,请确保您理解传递给mysqld服务器的选项的含义,以及为什么您希望拥有单独的mysqld进程。请注意,在相同的数据目录下使用多个mysqld服务器的危险性。除非您知道自己在做什么,否则请使用单独的数据目录。在线程系统中,使用相同数据目录启动多个服务器并不会提供额外的性能。请参阅第5.8节“在一个机器上运行多个MySQL实例”。 | |||
重要的是: | |||
确保每个服务器的数据目录对特定的mysqld进程所使用的Unix帐户完全可访问。除非您知道自己在做什么,否则不要使用Unix root帐户进行此操作。请参阅6.1.5节“如何将MySQL作为普通用户运行”。 | |||
确保用于通过mysqladmin程序停止mysqld服务器的MySQL帐户对于每个服务器具有相同的用户名和密码。还要确保该帐户具有SHUTDOWN权限。如果要管理的服务器的管理帐户具有不同的用户名或密码,您可能需要在每个服务器上创建一个具有相同用户名和密码的帐户。例如,您可以通过执行以下命令来设置一个常见的multi_admin帐户: | |||
$> mysql -u root -S /tmp/mysql.sock -p | |||
输入密码: | |||
mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; | |||
mysql> GRANT SHUTDOWN ON . TO 'multi_admin'@'localhost'; | |||
请参阅6.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 |
2023年7月4日 (二) 13:45的版本
mysqld_multi是设计用于管理在不同的Unix套接字文件和TCP/IP端口上监听连接的多个mysqld进程的工具。它可以启动或停止服务器,或者报告它们的当前状态。
'使用注意点:'
- 一般情况下不要为多MySql服务器配置相同的数据目录。
- 确保用于多MySql服务器的MySql停止服务账号的账号和密码一致。
- 每个MySql服务器的套接字与端口必须不一致。
- 使用独立的进程文件对于安全启动MySql服务器很重要。
注意: 对于某些Linux平台,通过RPM或Debian软件包安装MySQL时已经包含了systemd支持,用于管理MySQL服务器的启动和关闭。在这些平台上,不需要安装mysqld_multi。
mysqld_multi在my.cnf中(或由--defaults-file选项指定的文件中)搜索名为[mysqldN]的组。N可以是任何正整数。本文后续讨论中将称此数字为选项组编号(GNR)。组编号用于区分不同的选项组,并作为参数传递给mysqld_multi,以指定您要启动、停止或获取状态报告的服务器。这些组中列出的选项与您在用于启动mysqld的[mysqld]组中使用的选项相同。然而,在使用多个服务器时,每个服务器都必须使用其自己的选项值,例如Unix套接字文件和TCP/IP端口号等。
要调用mysqld_multi,请使用以下语法:
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
start、stop、reload(停止并重新启动)和report指示要执行的操作。您可以针对单个服务器或多个服务器执行指定操作,具体取决于后跟选项名称的GNR列表。如果没有列表,则mysqld_multi会在选项文件中为所有服务器执行该操作。
每个GNR值代表一个选项组编号或一系列连续的组编号。该值应为选项文件中组名末尾的数字。例如,组名为[mysqld17]的GNR为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参数时,不会读取任何选项文件。
使用--defaults-file=file_name参数时,仅读取指定的文件。
否则,将读取标准位置上的选项文件列表,包括由--defaults-extra-file=file_name参数指定的任何文件(如果有多个相同参数,则使用最后一个值)。
有关这些和其他选项文件选项的详细信息,请参见4.2.2.3节“影响选项文件处理的命令行参数”。
被读取的选项文件在[mysqld_multi]和[mysqldN]选项组中搜索。 [mysqld_multi]组可用于mysqld_multi本身的选项。 [mysqldN]组可用于传递给特定mysqld实例的选项。
[mysqld]或[mysqld_safe]组可用于所有mysqld或mysqld_safe实例共同读取的常用选项。您可以通过指定--defaults-file=file_name选项来为该实例使用不同的配置文件,在这种情况下,该文件中的[mysqld]或[mysqld_safe]组将用于该实例。
mysqld_multi支持以下选项。
--help
显示帮助消息并退出。
--example
显示示例选项文件。
--log=file_name
指定日志文件的名称。如果文件存在,则将日志输出追加到其中。
--mysqladmin=prog_name
用于停止服务器的mysqladmin二进制文件。
--mysqld=prog_name
要使用的mysqld二进制文件。请注意,您还可以将mysqld_safe作为此选项的值。如果使用mysqld_safe启动服务器,则可以在对应的[mysqldN]选项组中包含mysqld或ledir选项。这些选项指示mysqld_safe应启动的服务器的名称和服务器所在目录的路径名。 (请参阅第4.3.2节“mysqld_safe —— MySQL服务器启动脚本”中有关这些选项的描述。)示例:
[mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec --no-log
将日志信息打印到标准输出而不是日志文件中。默认情况下,输出会写入日志文件。
--password=password
在调用mysqladmin时使用的MySQL账户的密码。与其他MySQL程序不同,此选项的密码值是必需的。
--silent
静默模式;禁用警告。
--tcp-ip
通过TCP/IP端口连接到每个MySQL服务器,而不是Unix套接字文件。(如果套接字文件丢失,服务器可能仍在运行,但只能通过TCP/IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响停止和报告操作。
--user=user_name
在调用mysqladmin时使用的MySQL账户的用户名。
--verbose
增加详细输出。
--version
显示版本信息并退出。
关于mysqld_multi的一些注意事项:
最重要的是:在使用mysqld_multi之前,请确保您理解传递给mysqld服务器的选项的含义,以及为什么您希望拥有单独的mysqld进程。请注意,在相同的数据目录下使用多个mysqld服务器的危险性。除非您知道自己在做什么,否则请使用单独的数据目录。在线程系统中,使用相同数据目录启动多个服务器并不会提供额外的性能。请参阅第5.8节“在一个机器上运行多个MySQL实例”。
重要的是:
确保每个服务器的数据目录对特定的mysqld进程所使用的Unix帐户完全可访问。除非您知道自己在做什么,否则不要使用Unix root帐户进行此操作。请参阅6.1.5节“如何将MySQL作为普通用户运行”。
确保用于通过mysqladmin程序停止mysqld服务器的MySQL帐户对于每个服务器具有相同的用户名和密码。还要确保该帐户具有SHUTDOWN权限。如果要管理的服务器的管理帐户具有不同的用户名或密码,您可能需要在每个服务器上创建一个具有相同用户名和密码的帐户。例如,您可以通过执行以下命令来设置一个常见的multi_admin帐户:
$> mysql -u root -S /tmp/mysql.sock -p 输入密码: mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; mysql> GRANT SHUTDOWN ON . TO 'multi_admin'@'localhost'; 请参阅6.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