21.6.5 准备要复制的 NDB 群集

准备要复制的 NDB 群集包括以下步骤:

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 USERGRANT语句:

mysqlS> CREATE USER 'myreplica'@'replica-host'
     -> IDENTIFIED BY '53cr37';

mysqlS> GRANT REPLICATION SLAVE ON *.*
     -> TO 'myreplica'@'replica-host';

出于安全原因,最好为复制帐户使用唯一的用户帐户(不用于任何其他目的)。

  • 设置副本以使用源。使用mysqlClient 端,可以通过以下更改为主语句完成此操作:
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-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以防止其尝试连接到源。在复制所有数据之前开始复制。数据加载完成后,请执行以下两节中概述的其他步骤。