在 Windows 上,MySQL 服务器可以作为 Windows 服务运行。安装、控制和删除单个 MySQL 服务的过程在 第 2.3.3.8 节,“将 MySQL 作为 Windows 服务启动” 中进行了描述。
要设置多个 MySQL 服务,除了每个实例必须唯一的其他参数外,还必须确保每个实例使用不同的服务名称。
对于以下说明,假设您要从安装在 C:\mysql-5.7.9
和 C:\mysql-9.0.0
的两个不同版本的 MySQL 运行 mysqld 服务器。(如果您正在运行 5.7.9 作为生产服务器,但还想使用 9.0.0 进行测试,则可能会出现这种情况。)
要将 MySQL 作为 Windows 服务安装,请使用 --install
或 --install-manual
选项。有关这些选项的信息,请参阅 第 2.3.3.8 节,“将 MySQL 作为 Windows 服务启动”。
根据前面的信息,您可以通过多种方式设置多个服务。以下说明描述了一些示例。在尝试其中任何一项之前,请关闭并删除任何现有的 MySQL 服务。
方法 1: 在其中一个标准选项文件中指定所有服务的选项。为此,请为每个服务器使用不同的服务名称。假设您要使用服务名称
mysqld1
运行 5.7.9 mysqld,使用服务名称mysqld2
运行 9.0.0 mysqld。在这种情况下,您可以对 5.7.9 使用[mysqld1]
组,对 9.0.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-9.0.0 port = 3308 enable-named-pipe socket = mypipe2
使用完整的服务器路径名安装服务,如下所示,以确保 Windows 为每个服务注册了正确的可执行程序
C:\> C:\mysql-5.7.9\bin\mysqld --install mysqld1 C:\> C:\mysql-9.0.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
对于 9.0.0 mysqld,创建如下所示的文件
C:\my-opts2.cnf
[mysqld] basedir = C:/mysql-9.0.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-9.0.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 时可以省略它。