Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Running Multiple MySQL Instances on Unix

7.8.3 在 Unix 上运行多个 MySQL 实例

Note

这里的讨论使用 mysqld_safe 启动多个 MySQL 实例。对于使用 RPM 分发的 MySQL 安装,服务器启动和关闭由 systemd 在几个 Linux 平台上管理。在这些平台上,mysqld_safe 不被安装,因为它是不必要的。关于使用 systemd 管理多个 MySQL 实例的信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”

在 Unix 上运行多个 MySQL 实例的一种方法是编译不同的服务器,以不同的默认 TCP/IP 端口号和 Unix 套接字文件,使每个服务器监听不同的网络接口。编译到不同的基本目录下也将自动结果在不同的编译数据目录、日志文件和 PID 文件位置。

假设现有的 8.2 服务器配置为默认的 TCP/IP 端口号(3306)和 Unix 套接字文件 (/tmp/mysql.sock)。要配置新的 8.3.0 服务器以不同的操作参数,使用类似以下的 CMake 命令:

$> cmake . -DMYSQL_TCP_PORT=port_number \
             -DMYSQL_UNIX_ADDR=file_name \
             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.3.0

这里,port_numberfile_name 必须不同于默认的 TCP/IP 端口号和 Unix 套接字文件路径名,而 CMAKE_INSTALL_PREFIX 值应该指定一个不同的安装目录,而不是现有的 MySQL 安装所在的目录。

如果您有一个监听特定端口号的 MySQL 服务器,可以使用以下命令来查找它使用的几个重要可配置变量,包括基本目录和 Unix 套接字文件名:

$> mysqladmin --host=host_name --port=port_number variables

使用该命令显示的信息,您可以告诉什么选项值 使用于配置其他服务器。

如果您指定 localhost 作为主机名,mysqladmin 将默认使用 Unix 套接字文件,而不是 TCP/IP。要明确指定传输协议,请使用 --protocol={TCP|SOCKET|PIPE|MEMORY} 选项。

您不需要编译一个新的 MySQL 服务器只是为了使用不同的 Unix 套接字文件和 TCP/IP 端口号。也可以使用相同的服务器二进制文件,并在运行时使用不同的参数值启动它。一个方法是使用命令行选项:

$> mysqld_safe --socket=file_name --port=port_number

要启动第二个服务器,提供不同的 --socket--port 选项值,并将 --datadir=dir_name 选项传递给 mysqld_safe,以便服务器使用不同的数据目录。

或者,将每个服务器的选项放入不同的选项文件,然后使用 --defaults-file 选项指定适当的选项文件路径。例如,如果两个服务器实例的选项文件名为 /usr/local/mysql/my.cnf/usr/local/mysql/my.cnf2,则启动服务器如下命令:

$> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
$> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf2

另一种方法是使用环境变量来设置 Unix 套接字文件名和 TCP/IP 端口号:

$> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
$> MYSQL_TCP_PORT=3307
$> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
$> bin/mysqld --initialize --user=mysql
$> mysqld_safe --datadir=/path/to/datadir &

这是快速启动第二个服务器以供测试的方法。这种方法的优点是环境变量设置将应用于从同一 shell 中调用的所有客户端程序。因此,这些客户端的连接将自动指向第二个服务器。

第 6.9 节,“环境变量” 列出了其他环境变量,您可以使用它们来影响 MySQL 程序。

在 Unix 上,mysqld_multi 脚本提供了另一种启动多个服务器的方法。请参阅 第 6.3.4 节,“mysqld_multi — 管理多个 MySQL 服务器”