### 5.8.1 设置多个数据目录

机器上的每个 MySQL 实例都应该有自己的数据目录。该位置是使用指定的[`--datadir=*`目录名`*`](server-system-variables.html#sysvar_datadir)选项。

为新实例设置数据目录有不同的方法：

-   创建一个新的数据目录。

-   复制现有数据目录。

    以下讨论提供了有关每种方法的更多详细信息。

警告

通常，您永远不应该有两台服务器来更新同一数据库中的数据。如果您的操作系统不支持无故障系统锁定，这可能会导致令人不快的意外。如果（尽管有此警告）您使用相同的数据目录运行多个服务器并且它们启用了日志记录，则您必须使用适当的选项来指定每个服务器唯一的日志文件名。否则，服务器会尝试登录到相同的文件。

即使遵守了上述注意事项，这种设置也仅适用于`MyISAM`和`合并`表，而不是任何其他存储引擎。此外，关于在服务器之间共享数据目录的警告始终适用于 NFS 环境。允许多个 MySQL 服务器通过 NFS 访问公共数据目录是一种*非常糟糕的主意*.主要问题是 NFS 是速度瓶颈。它不适用于此类用途。NFS 的另一个风险是您必须设计一种方法来确保两个或多个服务器不会相互干扰。通常 NFS 文件锁定由`锁定`daemon，但目前还没有平台可以在每种情况下都 100% 可靠地执行锁定。

#### 创建一个新的数据目录

使用这种方法，数据目录与您首次安装 MySQL 时的状态相同，并且具有默认的 MySQL 帐户集，并且没有用户数据。

在 Unix 上，初始化数据目录。看[第 2.10 节，“安装后设置和测试”](postinstallation.html).

在 Windows 上，数据目录包含在 MySQL 发行版中：

-   适用于 Windows 的 MySQL Zip 归档分发包含未修改的数据目录。您可以将这样的发行版解压到一个临时位置，然后复制它`数据`目录到您设置新实例的位置。

-   Windows MSI 程序包安装程序创建并设置已安装服务器使用的数据目录，还创建一个名为“模板”的原始数据目录`数据`在安装目录下。使用 MSI 包执行安装后，可以复制模板数据目录以设置其他 MySQL 实例。

#### 复制现有数据目录

[](<>)

使用此方法，数据目录中存在的任何 MySQL 帐户或用户数据都将转移到新的数据目录中。

1.  使用数据目录停止现有的 MySQL 实例。这必须是彻底关闭，以便实例将任何挂起的更改刷新到磁盘。

2.  将数据目录复制到新数据目录应该所在的位置。

3.  复制`我的.cnf`要么`我的.ini`现有实例使用的选项文件。这是新实例的基础。

4.  修改新的选项文件，以便任何引用原始数据目录的路径名都引用新的数据目录。此外，修改每个实例必须唯一的任何其他选项，例如 TCP/IP 端口号和日志文件。有关每个实例必须唯一的参数列表，请参阅[第 5.8 节，“在一台机器上运行多个 MySQL 实例”](multiple-servers.html).

5.  启动新实例，告诉它使用新的选项文件。
