启动多个MySQL实例作为Windows服务

在Windows上,MySQL服务器可以作为Windows服务运行。安装、控制、删除单个MySQL服务的过程在文章在Microsoft Windows上使用绿色版zip压缩包安装MySQL将MySQL作为Windows服务启动章节

要设置多个MySQL服务,必须确保每个实例使用不同的服务名,以及每个实例必须唯一的其他参数。
假设你想运行两个不同版本的MySQL服务器,分别安装在C:\ MySQL -5.5.9和C:\ MySQL -8.0.25。(如果您将5.5.9作为生产服务器运行,但又希望使用8.0.25进行测试。此时就需要确保每个实例使用不同的服务名,以及每个实例必须唯一的其他参数)

要将MySQL安装为Windows服务,请使用--install或--install-manual选项。

基于以上信息,您可以通过多种方式设置多个服务。下面的说明描述了一些示例。在尝试它们之前,请关闭并删除所有现有的MySQL服务。

配置多个mysql服务器需要注意事项:

  • 最好不要在windows系统环境变量中配置mysql bin目录的环境变量,否则安装过程可能报错。
  • 极力推荐使用--defaults-file命令指定默认配置文件路径。

方法1:

在一个标准选项文件中指定所有服务的选项。为此,为每个服务器使用不同的服务名称。假设mysql5.5.9 mysqldmysqld1的服务名运行,mysql8.0.25 mysqldmysqld2的服务名运行。在这种情况下,您可以使用[mysqld1]组用于mysql5.5.9,[mysqld2]组用于mysql8.0.25。例如,你可以这样设置C:\my.cnf:

# options for mysqld1 service
[mysqld1]
basedir = C:/mysql-5.5.9
port = 3307
enable-named-pipe
socket = mypipe1

# options for mysqld2 service
[mysqld2]
basedir = C:/mysql-8.0.25
port = 3308
enable-named-pipe
socket = mypipe2

按照以下方式安装服务,使用完整的服务器路径名,以确保Windows为每个服务注册了正确的可执行程序:

C:\> C:\mysql-5.5.9\bin\mysqld --install mysqld1
C:\> C:\mysql-8.0.25\bin\mysqld --install mysqld2

要启动服务,使用服务管理器:NET startSC 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]组列出选项。
使用这种方法,为mysql5.5.9版本的mysqld指定选项,创建一个C:\my-opts1.cnf文件,如下所示:

[mysqld]
basedir = C:/mysql-5.5.9
port = 3307
enable-named-pipe
socket = mypipe1

对于mysql8.0.25版本的mysqld,创建一个C:\my-opts2.cnf文件,如下所示:

[mysqld]
basedir = C:/mysql-8.0.25
port = 3308
enable-named-pipe
socket = mypipe2

按如下方式安装服务(在单行中输入每个命令):

C:\> C:\mysql-5.5.9\bin\mysqld --install mysqld1
           --defaults-file=C:\my-opts1.cnf
C:\> C:\mysql-8.0.25\bin\mysqld --install mysqld2
           --defaults-file=C:\my-opts2.cnf

当你将MySQL服务器作为服务安装,并使用--defaults-file选项时,服务名必须在选项之前。
安装服务后,启动和停止服务的方法与前面的示例相同。

如果需要删除多个服务,请使用SC DELETE mysqld_service_name。或者,对每一个都使用mysqld--remove,在--remove选项后面指定一个服务名。如果服务名是默认的(MySQL),你可以在使用mysqld--remove时忽略它。

posted on 2021-04-12 16:09  哑吧  阅读(287)  评论(1编辑  收藏  举报