暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

4.3.4 mysqld_multi-管理多个MySQL服务器

原创 由迪 2020-11-15
1033

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-fileN**GNR[mysqld]。)但是,当使用多台服务器时,每个服务器都必须使用自己的值作为选项,例如Unix套接字文件和TCP / IP端口号。有关在多服务器环境中每个服务器上哪些选项必须唯一的更多信息,请参见 第5.8节“在一台计算机上运行多个MySQL实例”

要调用mysqld_multi,请使用以下语法:

shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
复制

startstopreload(停止和重新起动),并 report指示执行哪个操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于*GNR*选项名称后面的 列表。如果没有列表,则mysqld_multi 对选项文件中的所有服务器执行操作。

每个*GNR值代表一个选项组号或组号范围。该值应为选项文件中组名末尾的数字。例如,GNR名为的组 [mysqld17]17。要指定数字范围,请用破折号分隔第一个和最后一个数字。该GNR10-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搜索选项文件,如下所示:

有关这些选项文件选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”

搜索已读取的选项文件 [mysqld_multi]和 选项组。该组可用于mysqld_multi本身的选项。 组可用于传递给特定mysqld实例的选项 。 [mysqld*N*]``[mysqld_multi]``[mysqld*N*]

[mysqld][mysqld_safe]团体可用于通过的所有实例读取常用选项的mysqldmysqld_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启动服务器,则可以在相应的 选项组中包括mysqldledir选项 。这些选项指示mysqld_safe应该启动的服务器的名称以及该服务器所在目录的路径名称。(请参见第4.3.2节“ mysqld_safe -MySQL服务器启动脚本”中对这些选项的描述 。)示例: [mysqld*N*]

    [mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
    复制
  • --no-log

    将日志信息打印到stdout而不是打印到日志文件。默认情况下,输出进入日志文件。

  • --password=*password*

    调用mysqladmin时要使用的MySQL帐户的密码 。请注意,与其他MySQL程序不同,此选项的密码值不是可选的。

  • --silent

    静音模式; 禁用警告。

  • --tcp-ip

    通过TCP / IP端口而不是Unix套接字文件连接到每个MySQL服务器。(如果缺少套接字文件,则服务器可能仍在运行,但只能通过TCP / IP端口访问。)默认情况下,使用Unix套接字文件进行连接。此选项影响 stopreport 操作。

  • --user=*user_name*

    调用mysqladmin时要使用的MySQL帐户的用户名 。

  • --verbose

    更加冗长。

  • --version

    显示版本信息并退出。

有关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会重启该进程。

  • 您可能要--usermysqld使用该 选项 ,但是要执行此操作,您需要以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
复制

请参见第4.2.2.2节“使用选项文件”

最后修改时间:2020-11-15 15:17:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论