Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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.3 服务器,配置了默认 TCP/IP 端口号(3306)和 Unix 套接字文件(/tmp/mysql.sock)。要为新的 8.4.0 服务器配置不同的操作参数,可以使用以下类似命令的 CMake 命令:

$> cmake . -DMYSQL_TCP_PORT=port_number \
             -DMYSQL_UNIX_ADDR=file_name \
             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.4.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,以便服务器使用不同的数据目录。

Alternatively,将每个服务器的选项写入到不同的选项文件,然后使用--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 服务器管理”