在 Windows 上,MySQL 服务器可以作为 Windows 服务运行。有关安装、控制和删除单个 MySQL 服务的过程,请参阅 第 2.3.3.8 节 “将 MySQL 作为 Windows 服务启动”。
要设置多个 MySQL 服务,除了每个实例必须唯一的其他参数外,还必须确保每个实例使用不同的服务名称。
对于以下说明,假设您要从安装在 C:\mysql-5.7.9
和 C:\mysql-8.4.0
的两个不同版本的 MySQL 运行 mysqld 服务器。(如果您将 5.7.9 作为生产服务器运行,但也想使用 8.4.0 进行测试,则可能会出现这种情况。)
要将 MySQL 作为 Windows 服务安装,请使用 --install
或 --install-manual
选项。有关这些选项的信息,请参阅 第 2.3.3.8 节 “将 MySQL 作为 Windows 服务启动”。
根据前面的信息,您可以通过多种方法来设置多个服务。以下说明描述了一些示例。在尝试任何一种方法之前,请关闭并删除任何现有的 MySQL 服务。
方法 1: 在其中一个标准选项文件中指定所有服务的选项。为此,请为每个服务器使用不同的服务名称。假设您要使用服务名称
mysqld1
运行 5.7.9 mysqld,使用服务名称mysqld2
运行 8.4.0 mysqld。在这种情况下,您可以对 5.7.9 使用[mysqld1]
组,对 8.4.0 使用[mysqld2]
组。例如,您可以像这样设置C:\my.cnf
# options for mysqld1 service [mysqld1] basedir = C:/mysql-5.7.9 port = 3307 enable-named-pipe socket = mypipe1 # options for mysqld2 service [mysqld2] basedir = C:/mysql-8.4.0 port = 3308 enable-named-pipe socket = mypipe2
使用完整的服务器路径名安装服务,如下所示,以确保 Windows 为每个服务注册正确的可执行程序
C:\> C:\mysql-5.7.9\bin\mysqld --install mysqld1 C:\> C:\mysql-8.4.0\bin\mysqld --install mysqld2
要启动服务,请使用服务管理器,或者使用带有相应服务名称的 NET START 或 SC START
C:\> SC START mysqld1 C:\> SC START mysqld2
要停止服务,请使用服务管理器,或者使用带有相应服务名称的 NET STOP 或 SC STOP
C:\> SC STOP mysqld1 C:\> SC STOP mysqld2
方法 2: 在单独的文件中指定每个服务器的选项,并在安装服务时使用
--defaults-file
告诉每个服务器要使用哪个文件。在这种情况下,每个文件都应使用[mysqld]
组列出选项。使用这种方法,要指定 5.7.9 mysqld 的选项,请创建一个如下所示的
C:\my-opts1.cnf
文件[mysqld] basedir = C:/mysql-5.7.9 port = 3307 enable-named-pipe socket = mypipe1
对于 8.4.0 mysqld,创建一个如下所示的
C:\my-opts2.cnf
文件[mysqld] basedir = C:/mysql-8.4.0 port = 3308 enable-named-pipe socket = mypipe2
如下所示安装服务(在一行中输入每个命令)
C:\> C:\mysql-5.7.9\bin\mysqld --install mysqld1 --defaults-file=C:\my-opts1.cnf C:\> C:\mysql-8.4.0\bin\mysqld --install mysqld2 --defaults-file=C:\my-opts2.cnf
当您将 MySQL 服务器作为服务安装并使用
--defaults-file
选项时,服务名称必须位于选项之前。安装服务后,以与前面的示例相同的方式启动和停止它们。
要删除多个服务,请对每个服务使用 SC DELETE mysqld_service_name
。或者,对每个服务使用 mysqld --remove,并在 --remove
选项后指定服务名称。如果服务名称是默认值 (MySQL
),则在使用 mysqld --remove 时可以省略它。