本节提供了使用 MySQL Cluster Manager 设置具有单个复制通道的 MySQL Cluster 复制的示例步骤。
在尝试以下步骤之前,建议您先阅读NDB Cluster Replication以熟悉 MySQL Cluster 复制的概念、要求、操作和限制。
创建并启动源集群:
mcm> create site --hosts=tonfisk msite;
mcm> add package --basedir=/usr/local/cluster-mgt/cluster-7.3.2 7.3.2;
mcm> create cluster -P 7.3.2 -R \ ndb_mgmd@tonfisk,ndbmtd@tonfisk,ndbmtd@tonfisk,mysqld@tonfisk,mysqld@tonfisk,ndbapi@*,ndbapi@* \ source;
mcm> set portnumber:ndb_mgmd=4000 source;
mcm> set port:mysqld:51=3307 source;
mcm> set port:mysqld:50=3306 source;
mcm> set server_id:mysqld:50=100 source;
mcm> set log_bin:mysqld:50=binlog source;
mcm> set binlog_format:mysqld:50=ROW source;
mcm> set ndb_connectstring:mysqld:50=tonfisk:4000 source;
mcm> start cluster source;
创建并启动副本集群(我们首先为副本集群创建一个名为“ ssite ”的新站点;您也可以跳过它,将源和副本集群主机放在同一站点下):
mcm> create site --hosts=flundra ssite;
mcm> add package --basedir=/usr/local/cluster-mgt/cluster-7.3.2 7.3.2;
mcm> create cluster -P 7.3.2 -R \ ndb_mgmd@flundra,ndbmtd@flundra,ndbmtd@flundra,mysqld@flundra,mysqld@flundra,ndbapi@*,ndbapi@* \ replica;
mcm> set portnumber:ndb_mgmd=4000 replica;
mcm> set port:mysqld:50=3306 replica;
mcm> set port:mysqld:51=3307 replica;
mcm> set server_id:mysqld:50=101 replica;
mcm> set ndb_connectstring:mysqld:50=flundra:4000 replica;
mcm> set slave_skip_errors:mysqld=all replica;
mcm> start cluster replica;
通过登录到源复制客户端 ( ) 并发出以下语句 ,在具有适当权限的源集群上 创建副本帐户(用户名 “ myreplica ”和密码“ mypw ” ):
mysql
M
mysqlM> GRANT REPLICATION SLAVE ON *.* TO 'myreplica'@'flundra' -> IDENTIFIED BY 'mypw';
登录副本集群客户端 ( ) 并发出以下语句:
mysql
S
mysqlS> CHANGE MASTER TO -> MASTER_HOST='tonfisk', -> MASTER_PORT=3306, -> MASTER_USER='myreplica', -> MASTER_PASSWORD='mypw';
通过使用副本集群客户端发出以下语句来启动复制:
mysqlS> START SLAVE;
上面的示例假设源集群和副本集群几乎同时创建,并且在复制开始之前两者上都没有数据。如果在创建从集群时源集群已经在运行并且上面有数据,那么在上面的步骤3之后,按照以下步骤将数据从源集群传输到副本集群并准备副本集群进行复制:
backup cluster
使用MySQL Cluster Manager 的命令 备份您的源集群 :mcm> backup cluster source;
笔记该命令仅
NDB
备份表;使用其他 MySQL 存储引擎的表将被忽略。通过列出源集群的所有备份来查找您刚刚创建的备份的备份 ID:
mcm> list backups source; +----------+--------+---------+---------------------+---------+ | BackupId | NodeId | Host | Timestamp | Comment | +----------+--------+---------+---------------------+---------+ | 1 | 1 | tonfisk | 2014-10-17 20:03:23 | | | 1 | 2 | tonfisk | 2014-10-17 20:03:23 | | | 2 | 1 | tonfisk | 2014-10-17 20:09:00 | | | 2 | 2 | tonfisk | 2014-10-17 20:09:00 | | +----------+--------+---------+---------------------+---------+
从输出中可以看到,您创建的最新备份的备份ID为“ 2 ”,并且存在节点“ 1 ”和“ 2 ”的备份数据。
使用备份 ID 和相关节点 ID,在源集群的安装目录下识别刚刚创建的备份文件 (在本例中为 和 下的文件),并将它们复制到副本集群的对等位置(在本例中例, 并 在副本集群的安装目录下)。复制完成后,使用以下命令检查备份现在是否可用于副本集群:
/mcm_data/clusters/
cluster_name
/node_id
/data/BACKUP/BACKUP-backup_id
//mcm_data/clusters/source/1/data/BACKUP/BACKUP-2
/mcm_data/clusters/source/2/data/BACKUP/BACKUP-2
/mcm_data/clusters/replica/1/data/BACKUP/BACKUP-2
/mcm_data/clusters/replica/2/data/BACKUP/BACKUP-2
mcm> list backups replica; +----------+--------+---------+---------------------+---------+ | BackupId | NodeId | Host | Timestamp | Comment | +----------+--------+---------+---------------------+---------+ | 2 | 1 | flundra | 2014-10-17 21:19:00 | | | 2 | 2 | flundra | 2014-10-17 21:19:00 | | +----------+--------+---------+---------------------+---------+
将备份的数据恢复到副本集群(请注意,您需要一个未使用的
ndbapi
插槽才能使restore cluster
命令生效):mcm> restore cluster --backupid=2 replica;
在源集群客户端上,使用以下命令确定正确的二进制日志文件和复制开始的位置:
mysqlM> SHOW MASTER STATUS\G; *************************** 1. row *************************** File: binlog.000017 Position: 2857 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set:
在副本集群客户端,向副本集群提供源集群的信息,包括 您在上面第5步中刚刚发现 的二进制日志文件名(带
MASTER_LOG_FILE
选项)和位置(带选项):MASTER_LOG_POS
mysqlS> CHANGE MASTER TO -> MASTER_HOST='tonfisk', -> MASTER_PORT=3306, -> MASTER_USER='myreplica', -> MASTER_PASSWORD='mypw', -> MASTER_LOG_FILE='binlog.000017', -> MASTER_LOG_POS=2857;
通过使用副本集群客户端发出以下语句来启动复制:
mysqlS> START SLAVE;
作为这些步骤的替代方法,您还可以按照NDB Cluster Backups With NDB Cluster Replication中描述的步骤将 数据从源复制到副本,并指定二进制日志文件和复制开始的位置。