MySQL 8.0 参考手册  / 第 5 章 MySQL 服务器管理  /  5.7 在一台机器上运行多个MySQL实例

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

在某些情况下,您可能希望在一台机器上运行多个 MySQL 实例。您可能希望测试新的 MySQL 版本,同时保持现有的生产设置不受干扰。或者您可能希望让不同的用户访问 他们自己管理的不同mysqld服务器。(例如,您可能是一家 Internet 服务提供商,想要为不同的客户提供独立的 MySQL 安装。)

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

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

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

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

  • --port=port_num

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

  • --socket={file_name|pipe_name}

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

  • --shared-memory-base-name=name

    此选项仅在 Windows 上使用。它指定 Windows 服务器使用的共享内存名称,以允许客户端使用共享内存进行连接。只需要为那些配置为允许共享内存连接的服务器指定不同的共享内存名称。

  • --pid-file=file_name

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

如果您使用以下日志文​​件选项,它们的值对于每个服务器必须不同:

For further discussion of log file options, see Section 5.4, “MySQL Server Logs”.

To achieve better performance, you can specify the following option differently for each server, to spread the load between several physical disks:

Having different temporary directories also makes it easier to determine which MySQL server created any given temporary file.

If you have multiple MySQL installations in different locations, you can specify the base directory for each installation with the --basedir=dir_name option. This causes each instance to automatically use a different data directory, log files, and PID file because the default for each of those parameters is relative to the base directory. In that case, the only other options you need to specify are the --socket and --port options. Suppose that you install different versions of MySQL using tar file binary distributions. These install in different locations, so you can start the server for each installation using the command bin/mysqld_safe under its corresponding base directory. mysqld_safe--basedir确定传递给 mysqld的正确 选项,您只需要指定 --socket--port选项给 mysqld_safe

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