在 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 时可以省略它。