Mysqld multi:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第43行: | 第43行: | ||
mysqld_multi按照以下方式搜索选项文件: | mysqld_multi按照以下方式搜索选项文件: | ||
使用--no-defaults参数时,不会读取任何选项文件。 | *使用--no-defaults参数时,不会读取任何选项文件。 | ||
*使用--defaults-file=file_name参数时,仅读取指定的文件。 | |||
*否则,将读取标准位置上的选项文件列表,包括由--defaults-extra-file=file_name参数指定的任何文件(如果有多个相同参数,则使用最后一个值)。 | |||
被读取的选项文件在[mysqld_multi]和[mysqldN]选项组中搜索。 [mysqld_multi]组可用于mysqld_multi本身的选项。 [mysqldN]组可用于传递给特定mysqld实例的选项。 | |||
[mysqld]或[mysqld_safe]组可用于所有mysqld或mysqld_safe实例共同读取的常用选项。您可以通过指定--defaults-file=file_name选项来为该实例使用不同的配置文件,在这种情况下,该文件中的[mysqld]或[mysqld_safe]组将用于该实例。 | [mysqld]或[mysqld_safe]组可用于所有mysqld或mysqld_safe实例共同读取的常用选项。您可以通过指定--defaults-file=file_name选项来为该实例使用不同的配置文件,在这种情况下,该文件中的[mysqld]或[mysqld_safe]组将用于该实例。 | ||
第58行: | 第56行: | ||
mysqld_multi支持以下选项。 | mysqld_multi支持以下选项。 | ||
--help | ''''--help'''' | ||
显示帮助消息并退出。 | 显示帮助消息并退出。 | ||
--example | |||
''''--example'''' | |||
显示示例选项文件。 | 显示示例选项文件。 | ||
--log=file_name | |||
''''--log=file_name'''' | |||
指定日志文件的名称。如果文件存在,则将日志输出追加到其中。 | 指定日志文件的名称。如果文件存在,则将日志输出追加到其中。 | ||
--mysqladmin=prog_name | |||
''''--mysqladmin=prog_name'''' | |||
用于停止服务器的mysqladmin二进制文件。 | 用于停止服务器的mysqladmin二进制文件。 | ||
要使用的mysqld二进制文件。请注意,您还可以将mysqld_safe作为此选项的值。如果使用mysqld_safe启动服务器,则可以在对应的[mysqldN] | ''''--mysqld=prog_name'''' | ||
要使用的mysqld二进制文件。请注意,您还可以将mysqld_safe作为此选项的值。如果使用mysqld_safe启动服务器,则可以在对应的[mysqldN]选项组中包含mysqld或ledir选项。这些选项指示mysqld_safe应启动的服务器的名称和服务器所在目录的路径名。示例: | |||
[mysqld38] | |||
mysqld = mysqld-debug | |||
ledir = /opt/local/mysql/libexec | |||
--no-log | |||
将日志信息打印到标准输出而不是日志文件中。默认情况下,输出会写入日志文件。 | 将日志信息打印到标准输出而不是日志文件中。默认情况下,输出会写入日志文件。 | ||
--password=password | |||
''''--password=password'''' | |||
在调用mysqladmin时使用的MySQL账户的密码。与其他MySQL程序不同,此选项的密码值是必需的。 | 在调用mysqladmin时使用的MySQL账户的密码。与其他MySQL程序不同,此选项的密码值是必需的。 | ||
--silent | |||
''''--silent'''' | |||
静默模式;禁用警告。 | 静默模式;禁用警告。 | ||
--tcp-ip | |||
''''--tcp-ip'''' | |||
通过TCP/IP端口连接到每个MySQL服务器,而不是Unix套接字文件。(如果套接字文件丢失,服务器可能仍在运行,但只能通过TCP/IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响停止和报告操作。 | 通过TCP/IP端口连接到每个MySQL服务器,而不是Unix套接字文件。(如果套接字文件丢失,服务器可能仍在运行,但只能通过TCP/IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响停止和报告操作。 | ||
--user=user_name | |||
''''--user=user_name'''' | |||
在调用mysqladmin时使用的MySQL账户的用户名。 | 在调用mysqladmin时使用的MySQL账户的用户名。 | ||
--verbose | |||
''''--verbose'''' | |||
增加详细输出。 | 增加详细输出。 | ||
--version | |||
''''--version'''' | |||
显示版本信息并退出。 | 显示版本信息并退出。 | ||
第112行: | 第121行: | ||
关于mysqld_multi的一些注意事项: | 关于mysqld_multi的一些注意事项: | ||
*最重要的是:在使用mysqld_multi之前,请确保您理解传递给mysqld服务器的选项的含义,以及为什么您希望拥有单独的mysqld进程。请注意,在相同的数据目录下使用多个mysqld服务器的危险性。除非您知道自己在做什么,否则请使用单独的数据目录。在线程系统中,使用相同数据目录启动多个服务器并不会提供额外的性能。 | |||
重要的是: | 重要的是: | ||
确保每个服务器的数据目录对特定的mysqld进程所使用的Unix帐户完全可访问。除非您知道自己在做什么,否则不要使用Unix root帐户进行此操作。 | |||
确保用于通过mysqladmin程序停止mysqld服务器的MySQL帐户对于每个服务器具有相同的用户名和密码。还要确保该帐户具有SHUTDOWN权限。如果要管理的服务器的管理帐户具有不同的用户名或密码,您可能需要在每个服务器上创建一个具有相同用户名和密码的帐户。例如,您可以通过执行以下命令来设置一个常见的multi_admin帐户: | *确保用于通过mysqladmin程序停止mysqld服务器的MySQL帐户对于每个服务器具有相同的用户名和密码。还要确保该帐户具有SHUTDOWN权限。如果要管理的服务器的管理帐户具有不同的用户名或密码,您可能需要在每个服务器上创建一个具有相同用户名和密码的帐户。例如,您可以通过执行以下命令来设置一个常见的multi_admin帐户: | ||
$> mysql -u root -S /tmp/mysql.sock -p | $> mysql -u root -S /tmp/mysql.sock -p | ||
输入密码: | 输入密码: | ||
mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; | mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass'; | ||
mysql> GRANT SHUTDOWN ON . TO 'multi_admin'@'localhost'; | mysql> GRANT SHUTDOWN ON . TO 'multi_admin'@'localhost'; | ||
您必须为每个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]组,以说明选项文件中可以存在“间隔”。这样可以提供更大的灵活性。 | ||
[mysqld6] | # This is an example of a my.cnf file for mysqld_multi. | ||
socket = /tmp/mysql.sock6 | # Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf | ||
port = 3311 | |||
pid-file = /usr/local/mysql/data6/hostname.pid6 | [mysqld_multi] | ||
datadir = /usr/local/mysql/data6 | mysqld = /usr/local/mysql/bin/mysqld_safe | ||
language = /usr/local/mysql/share/mysql/japanese | mysqladmin = /usr/local/mysql/bin/mysqladmin | ||
user = unix_user4 | 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:53的最新版本
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参数指定的任何文件(如果有多个相同参数,则使用最后一个值)。
被读取的选项文件在[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应启动的服务器的名称和服务器所在目录的路径名。示例:
[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服务器的危险性。除非您知道自己在做什么,否则请使用单独的数据目录。在线程系统中,使用相同数据目录启动多个服务器并不会提供额外的性能。
重要的是: 确保每个服务器的数据目录对特定的mysqld进程所使用的Unix帐户完全可访问。除非您知道自己在做什么,否则不要使用Unix root帐户进行此操作。
- 确保用于通过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';
您必须为每个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