7.8.1 设置多个数据目录
每台机器上的MySQL实例都应该有其自己的数据目录。位置使用--datadir=
选项指定。dir_名
为新实例设置数据目录有不同的方法:
-
创建新的数据目录。
-
复制现有的数据目录。
以下讨论提供了每种方法的更多细节。
通常,您应该从不运行多个服务器,它们更新同一个数据库。如果您的操作系统不支持无故障系统锁定,这可能会导致不良-surprises。如果(尽管警告)您运行多个服务器,使用相同的数据目录,并且它们启用了日志记录,那么必须使用适当的选项指定每个服务器唯一的日志文件名称。否则,服务器尝试将日志写入到同一个文件中。
即使遵守前面的预防措施,这种设置也只能在MyISAM
和MERGE
表上工作,而不是其他存储引擎上。此外,对于NFS环境,这个警告始终适用。允许多个MySQL服务器访问共同的数据目录是非常不好的想法。NFS的主要问题是速度瓶颈。它不适合这种用途。另一个风险是,您必须找到确保两个或多个服务器之间不互相干扰的方法。通常,NFS文件锁定由lockd
守护进程处理,但目前还没有平台可以在每种情况下100%可靠地进行锁定。
使用这种方法时,数据目录将恢复到初始安装状态,没有用户数据和默认的 MySQL 账户。
在 Unix 上,初始化数据目录。请参阅第 2.9 节,“Postinstallation Setup and Testing”。
在 Windows 上,数据目录是 MySQL 分发的一部分:
-
Windows 的 ZIP归档分发包含未修改的数据目录。您可以将其.unpack 到临时位置,然后将
data
目录复制到要设置新的实例的位置。 -
Windows MSI 安装程序创建并设置了安装服务器使用的数据目录,同时也创建了一个原始的“template”数据目录,名为
data
,位于安装目录下。使用 MSI 包安装完成后,可以将模板数据目录复制以设置其他 MySQL 实例。
使用这种方法时,MySQL 账户或用户数据在数据目录中将被保留到新的数据目录中。
-
停止现有 MySQL 实例,以便将任何挂起的更改写回磁盘。
-
复制数据目录到要设置新的数据目录的位置。
-
复制现有实例使用的
my. cnf
或my.ini
选项文件。这将作为新实例的基础。 -
将新的选项文件修改为,使得任何指向原始数据目录的路径名都指向新数据目录。同时,修改其他每个实例必须唯一的选项,如TCP/IP端口号和日志文件。关于需要每个实例唯一的参数,请见第7.8节,“在一台机器上运行多个MySQL实例”。
-
启动新的实例,并告诉它使用新的选项文件。