每个 MySQL 实例在一台机器上都应该有其自己的数据目录。该位置使用 --datadir=
选项指定。dir_name
有多种方法可以设置新的数据目录:
-
创建一个新的数据目录。
-
复制现有的数据目录。
以下讨论将详细介绍每种方法。
通常,不应该让两个服务器更新同一个数据库中的数据。这可能会导致不愉快的惊喜,如果您的操作系统不支持无故障的系统锁定。如果(尽管有这个警告)您运行多个服务器使用同一个数据目录,并且它们启用了日志记录,则必须使用适当的选项指定唯一的日志文件名,以便每个服务器。否则,服务器将尝试记录到同一个文件中。
即使遵循前面的警告,这种设置也只能与 MyISAM
和 MERGE
表一起工作,而不能与其他存储引擎一起工作。此外,在 NFS 环境中,这种警告始终适用。允许多个 MySQL 服务器访问同一个数据目录是非常 糟糕的想法。主要的问题是 NFS 是速度瓶颈。它不适合这种用途。另一个风险是您必须想办法确保两个或多个服务器不会相互干扰。通常,NFS 文件锁定是由 lockd
守护进程处理的,但目前没有平台可以在每种情况下都可靠地执行锁定。
创建新的数据目录
使用这种方法,数据目录将处于与初始安装 MySQL 时相同的状态,具有默认的 MySQL 帐户和无用户数据。
在 Unix 上,初始化数据目录。请参阅 第 2.9 节,“安装后设置和测试”。
在 Windows 上,数据目录包含在 MySQL 发行版中:
-
Windows Zip 存档发行版包含未修改的数据目录。您可以将其解压缩到临时位置,然后将
data
目录复制到要设置的新实例的位置。 -
Windows MSI 软件包安装程序创建和设置了服务器使用的数据目录,但也创建了一个原始的 “模板” 数据目录,名为
data
,位于安装目录下。在使用 MSI 软件包安装后,可以将模板数据目录复制到设置新的 MySQL 实例。
复制现有的数据目录
使用这种方法,现有的 MySQL 帐户或用户数据将被带到新的数据目录中。
-
停止使用数据目录的现有 MySQL 实例。这必须是一个干净的关闭,以便实例将任何待定的更改刷新到磁盘。
-
将数据目录复制到新数据目录的位置。
-
将
my.cnf
或my.ini
选项文件复制到新实例中,作为基础。 -
修改新选项文件,以便任何指向原始数据目录的路径名都指向新数据目录。此外,还需要修改其他必须唯一的每个实例的选项,例如 TCP/IP 端口号和日志文件。有关每个实例必须唯一的参数列表,请参阅 第 7.8 节,“在一台机器上运行多个 MySQL 实例”。
-
启动新实例,告诉它使用新选项文件。