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  /  MySQL Server Administration  /  Running Multiple MySQL Instances on One Machine

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

在某些情况下,您可能想在单个机器上运行多个 MySQL 实例。您可能想测试新的 MySQL 发布版本,而不影响现有生产设置。或者,您可能想为不同用户提供不同的mysqld服务器,让他们自己管理这些服务器。 (例如,您可能是 Internet 服务提供商,想为不同客户提供独立的 MySQL 安装程序。)

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

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

MySQL 实例的主要资源是数据目录。每个实例都应该使用不同的数据目录,位置由--datadir=dir_name选项指定。关于配置每个实例的数据目录方法和警告,请见第7.8.1节,“设置多个数据目录”

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

  • --port=端口号

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

  • --socket={文件路径|管道名称}

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

  • --shared-memory-base-name=名称

    这项选项仅在 Windows 上使用。它指定了 Windows 服务器用于允许客户端通过共享内存连接的共享内存名称。在配置了共享内存连接的服务器时,只需要指定不同的共享内存名称。

  • --pid-file=文件路径

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

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

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

为了提高性能,您可以将以下选项分别指定给每个服务器,以便将负载分配到多个物理磁盘上:

不同的临时目录也使得更容易确定哪个 MySQL 服务器创建了任何给定的临时文件。

如果您在不同的位置安装了多个MySQL实例,可以使用--basedir=dir_名称选项指定每个实例的基础目录。这会导致每个实例自动使用不同的数据目录、日志文件和PID文件,因为这些参数的默认值相对于基础目录。在这种情况下,您需要指定的唯一其他选项是--socket--port选项。假设您使用tar文件二进制分发安装不同的MySQL版本,这些安装在不同的位置,因此可以使用每个实例的相应基础目录下的命令bin/mysqld_safe启动服务器。mysqld_safe会确定合适的--basedir选项传递给mysqld,因此您只需要指定--socket--port选项给mysqld_safe.

如前几节所讨论的那样,可以通过指定合适的命令选项或设置环境变量来启动额外的服务器。然而,如果您需要在更长期内运行多个服务器,使用选项文件指定每个服务器的唯一选项值更加方便。有用的--defaults-file选项用于这个目的。