[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5.9.1 Running Multiple Servers on Windows | ||
5.9.2 Running Multiple Servers on Unix | ||
5.9.3 Using Client Programs in a Multiple-Server Environment |
In some cases you might want to run multiple mysqld
servers
on the same machine. You might want to test a new
MySQL release while leaving your existing production setup undisturbed.
Or you may want to give different users access to different mysqld
servers that they manage themselves. (For example, you might be an
Internet service provider that wants to provide independent MySQL
installations for different customers.)
To run multiple servers on a single machine, each server must have unique values for several operating parameters. These can be set on the command line or in option files. See section 4.3 Specifying Program Options.
At least the following options must be different for each server:
--port=port_num
--socket=path
--shared-memory-base-name=name
(Windows only; new in MySQL 4.1)
--pid-file=path
(Unix only)
--port
controls the port number for TCP/IP connections.
--socket
controls the socket file path on Unix and the name of the
named pipe on Windows. (It's necessary to specify distinct pipe names on
Windows only for those servers that support named pipe connections.)
--shared-memory-base-name
designates the shared memory name used by a
Windows server to allow clients to connect via shared memory.
--pid-file
indicates the name of the file in which a Unix server writes
its process ID.
If you use the following options, they must be different for each server:
--log=path
--log-bin=path
--log-update=path
--log-error=path
--log-isam=path
--bdb-logdir=path
If you want more performance, you can also specify the following options differently for each server, to spread load between several physical disks:
--tmpdir=path
--bdb-tmpdir=path
Having different temporary directories like above is also recommended because it will be easier for you in case you want to know to which MySQL server a certain temporary file belongs.
Generally, each server should also use a different data directory, which is
specified using the --datadir=path
option.
Warning: Normally you should never have two servers that update data in the same databases! This may lead to unpleasant surprises if your operating system doesn't support fault-free system locking! If (despite this warning) you run multiple servers using the same data directory and they have logging enabled, you must use the appropriate options to specify log file names that are unique to each server. Otherwise, the servers will try to log to the same files.
This warning against sharing a data directory among servers also applies in an NFS environment. Allowing multiple MySQL servers to access a common data directory over NFS is a bad idea!
lockd
daemon, but at the moment there is no platform that will perform
locking 100% reliably in every situation.
Make it easy for yourself: Forget about sharing a data directory among servers over NFS. A better solution is to have one computer that contains several CPUs and use an operating system that handles threads efficiently.
If you have multiple MySQL installations in different locations, normally
you can specify the base installation directory for each server with the
--basedir=path
option to cause each server to use a different data
directory, log files, and PID file. (The defaults for all these values are
determined relative to the base directory.) In that case, the only other
options you need to specify are the --socket
and --port
options. For example, suppose you install different versions of MySQL using
`.tar' file binary distributions. These will install in different
locations, so you can start the server for each installation using the
command ./bin/mysqld_safe
under its corresponding base directory.
mysqld_safe
will determine the proper
--basedir
option to pass to mysqld
, and you need specify
only the --socket
and --port
options to mysqld_safe
.
As discussed in the following sections, it is possible to start additional servers by setting environment variables or by specifying appropriate command-line options. However, if you need to run multiple servers on a more permanent basis, it will be more convenient to use option files to specify for each server those option values that must be unique to it.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |