在一个系统上设置多个服务器只需几个步骤。
首先,需要调整 MySQL 的配置文件。
需要为每个服务器输入一组单独的选项。
至少,应该为每个服务器分配一个唯一的 TCP/IP 端口和一个不同的套接字文件。
配置文件中多个服务器的服务器组由 mysqld 前缀后跟数字后缀标识。
例如,第一个服务器可能由像 [mysqld1] 这样的组标题标识,我们可以从 0 或者其他一些数字开始。
第二个服务器可能是 [mysqld2]。
数字本身不必是连续的。
可以跳过数字。
可以为 [mysqld] 组提供的所有选项都可以提供给任何其他服务器。
这允许我们更改服务器选项以满足数据库可能需要的任何特殊要求。
以下是为三台服务器配置的 /etc/my.cnf 文件中的内容。
注意:特别重要的是要注意每个实例也应该有自己的数据目录。
至少,应该为每个服务器分配一个唯一的 TCP/IP 端口和/或者不同的套接字文件。
# vi /etc/my.cnf [mysqld_multi] mysqld = /usr/local/bin/mysqld_safe [mysqld0] port = 3306 socket = /tmp/mysql.sock0 pid-file = /usr/local/mysql/server0/ user = mysql0 datadir = /usr/local/mysql/server0 [mysqld1] port = 3307 socket = /tmp/mysql.sock1 pid-file = /usr/local/mysql/server1/ user = mysql1 datadir = /usr/local/mysql/server1 [mysqld2] port = 3308 socket = /tmp/mysql.sock2 pid-file = /usr/local/mysql/server2/ user = mysql2 datadir = /usr/local/mysql/server2
首先,请注意没有标记为 [mysqld] 的组。
那会使事情变得混乱。
在这个配置文件中,每个服务器使用不同的端口。
这将需要对访问服务器的任何脚本进行调整。
必须提供端口,以便不使用默认端口 (3306)。
上面的第一台服务器使用默认端口。
在此示例中,为每个服务器命名了一个单独的文件系统用户。
这是没有必要的。
但是,它对于更好的安全控制很有用。
当然,这需要在文件系统级别创建每个系统用户。
上面每组配置文件中设置的最后一个选项是每个服务器的数据目录。
服务器不能共享相同的数据目录。
因此,这将需要在文件系统上创建一个单独的目录。
确保将数据目录的所有权更改为相应的系统用户(例如 mysql0)。
一旦正确设置了配置文件,创建了系统用户,并且相关目录就位,那么服务器就可以启动了。
要轻松做到这一点,请使用 mysqld_multi 脚本。
该脚本将读取 MySQL 配置文件并按照前面提到的命名约定查找服务器组。
要启动所有服务器,将从命令行输入以下内容:
$ mysqld_multi start
这一行将为配置文件中列出的每个服务器组启动一个单独的 mysqld_safe 实例。
顺便说一句,要为 mysqld_multi 使用特殊的配置文件,只需在 start 参数前添加“-config-file = file”选项。
要停止所有服务器,请将 start 参数替换为 stop。
对于服务器状态报告,请使用 report 参数。
要启动特定服务器,请在启动参数后提供服务器的标识号。
例如,要停止前面显示的配置文件中标记为 [mysqld2] 的服务器,将输入以下内容:
$ mysqld_multi stop 2
省略了 mysqld 前缀。
可以通过给出第一个服务器的编号,然后是一个破折号,然后是最后一个服务器的编号(例如,2-5)来命名一系列服务器。
服务器可以通过用逗号分隔它们的标识符来单独列出(例如,2. 4)。
并且,可以使用两种方法的组合(例如,2. 4-7)。
有关如何构造配置文件的更多示例,请从命令行输入以下内容:
$ mysqld_multi --example