21.6.5 准备要复制的 NDB 群集
准备要复制的 NDB 群集包括以下步骤:
-
检查所有 MySQL 服务器的版本兼容性(请参阅第 21.6.2 节“ NDB 群集复制的一般要求”)。
-
使用以下两个 SQL 语句在源群集上创建具有适当特权的复制帐户:
mysqlS> CREATE USER 'replica_user'@'replica_host'
-> IDENTIFIED BY 'replica_password';
mysqlS> GRANT REPLICATION SLAVE ON *.*
-> TO 'replica_user'@'replica_host';
在上一条语句中,* replica_user
是复制帐户用户名, replica_host
是副本的主机名或 IP 地址, replica_password
*是分配给该帐户的密码。
例如,要创建名称为myreplica
的副本用户帐户,从名为replica-host
的主机登录并使用密码53cr37
,请使用以下CREATE USER和GRANT语句:
mysqlS> CREATE USER 'myreplica'@'replica-host'
-> IDENTIFIED BY '53cr37';
mysqlS> GRANT REPLICATION SLAVE ON *.*
-> TO 'myreplica'@'replica-host';
出于安全原因,最好为复制帐户使用唯一的用户帐户(不用于任何其他目的)。
mysqlR> CHANGE MASTER TO
-> MASTER_HOST='source_host',
-> MASTER_PORT=source_port,
-> MASTER_USER='replica_user',
-> MASTER_PASSWORD='replica_password';
在上一条语句中,* source_host
是复制源的主机名或 IP 地址, source_port
是复制源在连接到源时要使用的端口, replica_user
是为复制源设置的用户名源, replica_password
*是在上一步中为该用户帐户设置的密码。
例如,要使副本使用上一步中创建的复制帐户使用主机名为rep-source
的 MySQL 服务器,请使用以下语句:
mysqlR> CHANGE MASTER TO
-> MASTER_HOST='rep-source',
-> MASTER_PORT=3306,
-> MASTER_USER='myreplica',
-> MASTER_PASSWORD='53cr37';
有关可用于此语句的选项的完整列 table,请参见第 13.4.2.1 节“将主 table 更改为语句”。
要提供复制备份功能,还需要在开始复制过程之前,将--ndb-connectstring选项添加到副本的my.cnf
文件中。有关详情,请参见第 21.6.9 节“具有 NDB 群集复制功能的 NDB 群集备份”。
有关可以在my.cnf
中为副本设置的其他选项,请参见第 16.1.6 节“复制和二进制日志记录选项和变量”。
- 如果源群集已在使用中,则可以创建源的备份并将其加载到副本中,以减少副本与源同步自身所需的时间。如果副本也正在运行 NDB 群集,则可以使用第 21.6.9 节“具有 NDB 群集复制功能的 NDB 群集备份”中描述的备份和还原过程来实现。
ndb-connectstring=management_host[:port]
如果您不在副本上使用 NDB 群集,则可以在源上使用此命令创建备份:
shellS> mysqldump --master-data=1
然后通过将转储文件复制到副本上,将结果数据转储导入副本。之后,您可以使用mysqlClient 端将数据从转储文件导入到副本数据库中,如下所示,其中* dump_file
是在源上使用mysqldump生成的文件的名称, db_name
*是名称要复制的数据库:
shellR> mysql -u root -p db_name < dump_file
有关与mysqldump一起使用的选项的完整列 table,请参见第 4.5.4 节“ mysqldump-数据库备份程序”。
Note
如果以这种方式将数据复制到副本,则应确保使用命令行上的--skip-slave-start选项启动副本,否则应在副本的my.cnf
文件中包含skip-slave-start
以防止其尝试连接到源。在复制所有数据之前开始复制。数据加载完成后,请执行以下两节中概述的其他步骤。
- 确保使用基于行的格式为每个充当复制源的 MySQL 服务器分配唯一的服务器 ID,并启用二进制日志记录。 (请参阅第 16.2.1 节“复制格式”。)可以在源服务器的
my.cnf
文件中设置这些选项,也可以在启动源mysqld进程时在命令行中设置这些选项。有关后一个选项的信息,请参见第 21.6.6 节“启动 NDB 群集复制(单个复制通道)”。