在Windows中,可以从命令行手动启动来运行多个服务器,每个服务器使用合适的操作参数。在基于Windows NT的系统中,安装几个服务器时,你还有将多个服务器安装为Windows服务并运行的选项。关于从命令行运行MySQL服务器或作为服务运行的一般说明在 2.3节,“在Windows上安装MySQL”中给出。本节描述怎样确保你用不同的启动选项值(对于每个服务器必须是唯一的,例如数据目录)启动各个服务器。这些选项的描述见5.12节,“在同一台机器上运行多个MySQL服务器”。
假设你想要在端口3307使用数据目录C:\mydata1运行mysqld,并且想在端口3308使用数据目录C:\mydata1运行mysqld-max。(要想这样做,启动服务器之前要确保,每个数据目录存在并且有自己的mysql数据库拷贝,它包含 授权表)。
然后创建两个选项文件。例如,创建一个文件名为C:\my-opts1.cnf的配置文件,它看起来象这个样子:
[mysqld]
datadir = C:/mydata1
port = 3307
创建第二个文件名为C:\my-opts1.cnf的配置文件,它看起来象这个样子:
mysqld]
datadir = C:/mydata2
port = 3308
然后,用它们自己的选项文件启动每个服务器:
C:\> C:\mysql\bin\mysqld --defaults-file=C:\my-opts1.cnf
C:\> C:\mysql\bin\mysqld-max --defaults-file=C:\my-opts2.cnf
在NT中,每个服务器在前台启动(服务器退出前,不会显示新的提示符);需要在两个控制台窗口中执行这两个命令。
要想关闭服务器,必须连接到相应的端口号:
C:\> C:\mysql\bin\mysqladmin --port=3307 shutdown
C:\> C:\mysql\bin\mysqladmin --port=3308 shutdown
如刚才所讨论的,服务器配置允许客户端通过TCP/IP来连接。如果你的Windows版本支持命名管道并且你想允许命名管道连接,使用mysqld-nt或mysqld-max-nt服务器并指定启用命名管道并且指定管道名的选项。支持命名管道连接的每个服务器必须使用一个唯一的管道名。例如,C:\my-opts1.cnf文件可能象这样来书写:
[mysqld]
datadir = C:/mydata1
port = 3307
enable-named-pipe
socket = mypipe1
然后,这样启动服务器:
C:\> C:\mysql\bin\mysqld-nt --defaults-file=C:\my-opts1.cnf
同样修改第2个服务器使用的C:\my-opts2.cnf文件。
5.12.1.2. 做为服务启动多个Windows服务器
在基于NT的系统中,MySQL服务器可以以Windows服务的方式来运行。安装、控制和删除单个MySQL服务的过程描述见2.3.12节,“以Windows服务方式启动MySQL”。
你还可以以服务的方式安装多个MySQL服务器。此时,除了所有参数对每个服务器必须是唯一的,你还必须确保每个服务器使用不同的服务名。
在下面的说明中,假设你想要运行mysqld-nt服务器的两个不同的版本,它们分别安装在C:\mysql-4.1.8和C:\mysql-5.1.2-alpha目录中。(可能存在这种情况,如果你正在运行版本4.1.8作为你的产品服务器,还想使用5.1.2-alpha版本来进行测试)。
当用--install或--install-manual选项安装一个MySQL服务时,应遵从以下原则:
· 如果你没有指定服务名,服务器使用默认的MySQL服务名,从标准选项文件的[mysqld]组中读取选项。
· 如果你在--install选项后指定了服务名,服务器忽略[mysqld]选项组,从具有相同名的组中读取选项作为服务名。服务器从标准选项文件中读取选项。
· 如果你在服务名后面指定一个--defaults-file选项,服务器忽略标准选项文件,只从命名的文件的[mysqld]组读取选项。
注释:MySQL 4.0.17之前,只有使用默认服务名(MySQL)安装的一个服务器或使用服务名mysqld显式安装的一个服务器从标准选项文件读[mysqld]组。到4.0.17时,如果服务器读标准选项文件,则它们均读[mysqld]组,即使它们安装时使用了另一个服务名。这样允许你为选项使用[mysqld]组,用于所有MySQL服务器,并将根据每个服务器命名的选项组用于该服务器,即使用那个服务名安装的服务器。
根据前面叙述,你可以通过几个方法来设置多个服务器。下面的说明描述了一些示例。在尝试之前,应确保你首先关闭并且卸载了所有已有的MySQL服务器。
· 方法1:在一个标准选项文件中指定所有服务器选项。要想这样做,为每个服务器使用不同的服务名。假设你想使用服务名mysqld1运行4.1.8版的mysqld-nt并使用服务名mysqld2运行5.1.2-alpha版的mysqld-nt。在这种情况下,你可以为4.1.8使用[mysqld1]组,为5.1.2-alpha使用[mysqld2]组。例如,你可以象这样建立 C:\my.cnf文件:
· # options for mysqld1 service
· [mysqld1]
· basedir = C:/mysql-4.1.8
· port = 3307
· enable-named-pipe
· socket = mypipe1
·
· # options for mysqld2 service
· [mysqld2]
· basedir = C:/mysql-5.1.2-alpha
· port = 3308
· enable-named-pipe
· socket = mypipe2
如下面所示安装服务器,使用服务器的全路径名来确保Windows为每个服务注册正确的可执行程序:
C:\> C:\mysql-4.1.8\bin\mysqld-nt --install mysqld1
C:\> C:\mysql-5.1.2-alpha\bin\mysqld-nt --install mysqld2
为了启动服务器,使用服务管理器,或用带有适当的服务名的NET START:
C:\> NET START mysqld1
C:\> NET START mysqld2
要想停止服务,使用服务管理器,或用带有适当的服务名的NET STOP:
C:\> NET STOP mysqld1
C:\> NET STOP mysqld2
· 方法2:为每个服务器用不同的文件指定选项,当你安装服务时使用--defaults-file告诉每个服务器使用什么文件。此时,每个文件应用一个[mysqld]组列出选项。
使用这种方法为4.1.8版本的mysqld-nt指定选项,应象这样创建一个C:\my-opts1.cnf文件:
[mysqld]
basedir = C:/mysql-4.1.8
port = 3307
enable-named-pipe
socket = mypipe1
对于5.1.2-alpha版的mysqld-nt,象这样创建一个C:\my-opts2.cnf文件:
[mysqld]
basedir = C:/mysql-5.1.2-alpha port = 3308
enable-named-pipe
socket = mypipe2
安装服务如下(在一个单一行中输入每个命令):
C:\> C:\mysql-4.1.8\bin\mysqld-nt -- installmysqld1
--defaults-file=C:\my-opts1.cnf
C:\> C:\mysql-5.1.2-alpha\bin\mysqld-nt -- installmysqld2
--defaults-file=C:\my-opts2.cnf
当你作为服务安装一个MySQL服务器时,要想使用--defaults-file选项,你必须在此选项之前加服务名。
安装服务后,按照与前面的示例相同的方法启动和停止。
要想卸载多个服务,对每个服务使用mysqld --remove,在--remove选项后指定服务名。如果服务名是 默认的(MySQL),你可以不指定。