在某些情况下,您可能希望在一台机器上运行多个MySQL实例。您可能希望测试一个新的MySQL发行版,同时保持现有的生产设置不受干扰。或者您可能希望为不同的用户提供不同的访问权限mysqld他们管理自己的服务器。(例如,您可能是一个互联网服务提供商,想要为不同客户提供独立的MySQL安装。)
可以对每个实例使用不同的MySQL服务器二进制文件,或者对多个实例使用相同的二进制文件,或者两种方法的任何组合。例如,您可能运行MySQL 5.7和MySQL 8.0的服务器,以查看不同版本如何处理给定的工作负载。或者可以运行当前生产版本的多个实例,每个实例管理一组不同的数据库。
无论您是否使用不同的服务器二进制文件,您运行的每个实例都必须为几个操作参数配置唯一的值。这消除了实例之间发生冲突的可能性。参数可以在命令行、选项文件中或通过设置环境变量来设置。看到第4.2.2节,“指定程序选项”.要查看给定实例使用的值,请连接到它并执行a显示变量
陈述。
MySQL实例管理的主要资源是数据目录。每个实例都应该使用不同的数据目录,使用它的位置使用——datadir =
选项。有关使用自己的数据目录配置每个实例的方法,并警告对未能这样做的危险,请参阅第5.8.1节,“设置多个数据目录”.dir_name
除了使用不同的数据目录,其他几个选项必须为每个服务器实例具有不同的值:
- 港口
控制TCP/IP连接的端口号。或者,如果主机有多个网络地址,也可以设置bind_address.
系统变量,使每个服务器侦听不同的地址。——套接字
在Windows上控制UNIX上的UNIX套接字文件路径。在Windows上,必须仅针对配置为允许命名为管道连接的服务器来指定不同的管道名称。——shared-memory-base-name =
的名字
此选项仅在Windows上使用。它指定Windows Server使用的共享内存名称,以允许客户端使用共享内存连接。有必要仅为配置为允许共享内存连接的服务器指定不同的共享内存名称。
该选项指示服务器在其中写入其进程ID的文件的路径名。
如果您使用以下日志文件选项,它们的值必须为每个服务器不同:
有关日志文件选项的进一步讨论,请参见第5.4节“MySQL Server Logs”.
为了获得更好的性能,您可以为每个服务器指定不同的选项,以将负载分散到多个物理磁盘上:
使用不同的临时目录还可以更容易地确定哪个MySQL服务器创建了任何给定的临时文件。
如果在不同的位置有多个MySQL安装,可以使用--basedir =
选项。这导致每个实例自动使用不同的数据目录,日志文件和PID文件,因为每个参数的默认值是相对于基本目录。在这种情况下,您需要指定的唯一其他选项是dir_name
——套接字
和- 港口
选项。假设你安装不同版本的MySQL使用柏油
文件二进制发行版。这些在不同位置安装,因此您可以使用命令为每个安装启动服务器bin / mysqld_safe在相应的基目录下。mysqld_safe.确定正确——basedir
传递给的选项mysqld,并且您只需要指定——套接字
和- 港口
选项mysqld_safe..
如下部分中所讨论的,可以通过指定适当的命令选项或通过设置环境变量来启动其他服务器。但是,如果您需要在更永久的基础上运行多个服务器,则使用选项文件更方便,为每个服务器指定必须是唯一的服务器。这——defaults-file
选项对此目的很有用。