5.7 在一台计算机上运行多个 MySQL 实例

在某些情况下,您可能希望在一台计算机上运行多个 MySQL 实例。您可能想测试新的 MySQL 版本,同时保持现有的生产设置不变。或者,您可能希望授予不同的用户访问他们自己 Management 的不同mysqld服务器的权限。 (例如,您可能是一个 Internet 服务提供商,希望为不同的 Client 提供独立的 MySQL 安装.)

每个实例可以使用不同的 MySQL 服务器二进制文件,也可以对多个实例使用相同的二进制文件,或者两种方法的任意组合。例如,您可能从 MySQL 5.6 运行一台服务器,而从 MySQL 5.7 运行一台服务器,以查看不同版本如何处理给定的工作负载。或者,您可以运行当前生产版本的多个实例,每个实例 Management 一组不同的数据库。

无论您是否使用不同的服务器二进制文件,都必须为运行的每个实例配置几个操作参数的唯一值。这消除了实例之间发生冲突的可能性。可以在命令行,选项文件中或通过设置环境变量来设置参数。参见第 4.2.2 节“指定程序选项”。要查看给定实例使用的值,请连接到该实例并执行SHOW VARIABLES语句。

MySQL 实例 Management 的主要资源是数据目录。每个实例应使用不同的数据目录,该目录的位置使用--datadir=dir_name选项指定。有关使用各自的数据目录配置每个实例的方法以及有关这样做的危险的警告,请参阅第 5.7.1 节“设置多个数据目录”

除了使用不同的数据目录外,其他几个选项对于每个服务器实例还必须具有不同的值:

--port控制 TCP/IP 连接的端口号。或者,如果主机有多个网络地址,则可以设置bind_address系统变量以使每个服务器侦听不同的地址。

--socket控制 Unix 上的 Unix 套接字文件路径或 Windows 上的命名管道名称。在 Windows 上,仅需要为那些配置为允许命名管道连接的服务器指定不同的管道名称。

此选项仅在 Windows 上使用。它指定 Windows 服务器使用的共享内存名称,以允许 Client 端使用共享内存进行连接。只有为那些配置为允许共享内存连接的服务器指定唯一的共享内存名称是必要的。

此选项指示服务器在其中写入其进程 ID 的文件的路径名。

如果使用以下日志文件选项,则每个服务器的值必须不同:

有关日志文件选项的进一步讨论,请参见第 5.4 节“ MySQL 服务器日志”

为了获得更好的性能,可以为每台服务器分别指定以下选项,以在多个物理磁盘之间分散负载:

使用不同的临时目录还可以更轻松地确定哪个 MySQL 服务器创建了任何给定的临时文件。

如果在不同位置有多个 MySQL 安装,则可以使用--basedir=dir_name选项为每个安装指定基本目录。这将导致每个实例自动使用不同的数据目录,日志文件和 PID 文件,因为每个参数的默认值都是相对于基本目录而言的。在这种情况下,您需要指定的唯一其他选项是--socket--port选项。假设您使用tar文件二进制发行版安装了不同版本的 MySQL。它们安装在不同的位置,因此您可以使用命令 bin/mysqld_safe 在其相应基本目录下启动每次安装的服务器。 mysqld_safe确定要传递给mysqld的正确--basedir选项,并且您只需要为mysqld_safe指定--socket--port选项。

如以下各节所述,可以通过指定适当的命令选项或通过设置环境变量来启动其他服务器。但是,如果您需要更长时间地运行多个服务器,则使用选项文件为每个服务器指定必须唯一的选项值更为方便。 --defaults-file选项可用于此目的。