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