5.12.1.2. Starting Multiple Windows Servers as Services
On NT-based systems, a MySQL server can run as a Windows
service. The procedures for installing, controlling, and
removing a single MySQL service are described in
Section 2.3.11, “Starting MySQL as a Windows Service”.
You can also install multiple MySQL servers as services. In
this case, you must make sure that each server uses a
different service name in addition to all the other parameters
that must be unique for each server.
For the following instructions, assume that you want to run
the mysqld-nt server from two different
versions of MySQL that are installed at
C:\mysql-5.0.19
and
C:\mysql-5.1.7-beta
, respectively.
(This might be the case if you're running 5.0.19 as your
production server, but also want to conduct tests using
5.1.7-beta.)
The following principles apply when installing a MySQL service
with the --install
or
--install-manual
option:
If you specify no service name, the server uses the
default service name of MySQL
and the
server reads options from the [mysqld]
group in the standard option files.
If you specify a service name after the
--install
option, the server ignores the
[mysqld]
option group and instead reads
options from the group that has the same name as the
service. The server reads options from the standard option
files.
If you specify a --defaults-file
option
after the service name, the server ignores the standard
option files and reads options only from the
[mysqld]
group of the named file.
Note: Before MySQL 4.0.17,
only a server installed using the default service name
(MySQL
) or one installed explicitly with a
service name of mysqld read the
[mysqld]
group in the standard option
files. As of 4.0.17, all servers read the
[mysqld]
group if they read the standard
option files, even if they are installed using another service
name. This allows you to use the [mysqld]
group for options that should be used by all MySQL services,
and an option group named after each service for use by the
server installed with that service name.
Based on the preceding information, you have several ways to
set up multiple services. The following instructions describe
some examples. Before trying any of them, be sure that you
shut down and remove any existing MySQL services first.
-
Approach 1: Specify the
options for all services in one of the standard option
files. To do this, use a different service name for each
server. Suppose that you want to run the 5.0.19
mysqld-nt using the service name of
mysqld1
and the 5.1.7-beta
mysqld-nt using the service name
mysqld2
. In this case, you can use the
[mysqld1]
group for 5.0.19 and the
[mysqld2]
group for 5.1.7-beta.
For example, you can set up C:\my.cnf
like this:
# options for mysqld1 service
[mysqld1]
basedir = C:/mysql-5.0.19
port = 3307
enable-named-pipe
socket = mypipe1
# options for mysqld2 service
[mysqld2]
basedir = C:/mysql-5.1.7-beta
port = 3308
enable-named-pipe
socket = mypipe2
Install the services as follows, using the full server
pathnames to ensure that Windows registers the correct
executable program for each service:
C:\> C:\mysql-5.0.19\bin\mysqld-nt --install mysqld1
C:\> C:\mysql-5.1.7-beta\bin\mysqld-nt --install mysqld2
To start the services, use the services manager, or use
NET START with the appropriate service
names:
C:\> NET START mysqld1
C:\> NET START mysqld2
To stop the services, use the services manager, or use
NET STOP with the appropriate service
names:
C:\> NET STOP mysqld1
C:\> NET STOP mysqld2
-
Approach 2: Specify
options for each server in separate files and use
--defaults-file
when you install the
services to tell each server what file to use. In this
case, each file should list options using a
[mysqld]
group.
With this approach, to specify options for the 5.0.19
mysqld-nt, create a file
C:\my-opts1.cnf
that looks like this:
[mysqld]
basedir = C:/mysql-5.0.19
port = 3307
enable-named-pipe
socket = mypipe1
For the 5.1.7-beta mysqld-nt,
create a file C:\my-opts2.cnf
that
looks like this:
[mysqld]
basedir = C:/mysql-5.1.7-beta
port = 3308
enable-named-pipe
socket = mypipe2
Install the services as follows (enter each command on a
single line):
C:\> C:\mysql-5.0.19\bin\mysqld-nt --install mysqld1
--defaults-file=C:\my-opts1.cnf
C:\> C:\mysql-5.1.7-beta\bin\mysqld-nt --install mysqld2
--defaults-file=C:\my-opts2.cnf
To use a --defaults-file
option when you
install a MySQL server as a service, you must precede the
option with the service name.
After installing the services, start and stop them the
same way as in the preceding example.
To remove multiple services, use mysqld
--remove for each one, specifying a service name
following the --remove
option. If the service
name is the default (MySQL
), you can omit
it.