7.8.1 设置多个数据目录
Each MySQL Instance on a machine should have its own data directory. The location is specified using the --datadir=
option.dir_name
There are different methods of setting up a data directory for a new instance:
-
Create a new data directory.
-
Copy an existing data directory.
The following discussion provides more detail about each method.
Normally, you should never have two servers that update data in the same databases. This may lead to unpleasant surprises if your operating system does not 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 try to log to the same files.
Even when the preceding precautions are observed, this kind of setup works only with MyISAM
and MERGE
tables, and not with any of the other storage engines. Also, this warning against sharing a data directory among servers always applies in an NFS environment. Permitting multiple MySQL servers to access a common data directory over NFS is a very bad idea. The primary problem is that NFS is the speed bottleneck. It is not meant for such use. Another risk with NFS is that you must devise a way to ensure that two or more servers do not interfere with each other. Usually NFS file locking is handled by the lockd
daemon, but at the moment there is no platform that performs locking 100% reliably in every situation.
With this method, the data directory is in the same state as when you first install MySQL, and has the default set of MySQL accounts and no user data.
On Unix, initialize the data directory. See Section 2.9, “Postinstallation Setup and Testing”.
On Windows, the data directory is included in the MySQL distribution:
-
MySQL Zip archive distributions for Windows contain an unmodified data directory. You can unpack such a distribution into a temporary location, then copy it
data
directory to where you are setting up the new instance. -
Windows MSI package installers create and set up the data directory that the installed server uses, but also create a pristine “template” data directory named
data
under the installation directory. After an installation has been performed using an MSI package, the template data directory can be copied to set up additional MySQL instances.
With this method, any MySQL accounts or user data present in the data directory are carried over to the new data directory.
-
Stop the existing MySQL instance using the data directory. This must be a clean shutdown so that the instance flushes any pending changes to disk.
-
Copy the data directory to the location where the new data directory should be.
-
Copy the
my.cnf
ormy.ini
option file used by the existing instance. This serves as a basis for the new instance. -
Modify the new option file so that any pathnames referring to the original data directory refer to the new data directory. Also, modify any other options that must be unique per instance, such as the TCP/IP port number and the log files. For a list of parameters that must be unique per instance, see Section 7.8, “Running Multiple MySQL Instances on One Machine”.
-
Start the new instance, telling it to use the new option file.