21.6.9.2 使用 NDB 群集复制进行时间点恢复
时间点恢复(即,自给定时间点以来所做的数据更改的恢复)是在还原完整备份后执行的,该备份将使服务器返回到进行备份时的状态。可以使用本机NDB数据备份(通过在ndb_mgmClient 端中发出CREATE BACKUP进行备份)并还原ndb_binlog_index
table(从使用mysqldump进行的转储)来完成 NDB Clustertable 和 NDB Cluster 复制的 NDB Clustertable 的时间点恢复。 。
要执行 NDB 群集的时间点恢复,必须遵循此处显示的步骤:
-
使用ndb_mgmClient 端中的START BACKUP命令备份群集中的所有
NDB
数据库(请参阅第 21.5.8 节“ NDB 群集的在线备份”)。 -
稍后,在还原群集之前,请备份
mysql.ndb_binlog_index
table。对于此任务,使用mysqldump可能是最简单的。同时还备份二进制日志文件。
此备份应定期更新(甚至每小时一次),具体取决于您的需求。
Note
--initial不会删除 NDB 群集磁盘数据 table 空间和日志文件。您必须手动删除它们。
-
将DROP TABLE或TRUNCATE TABLE与
mysql.ndb_binlog_index
table 一起使用。 -
执行ndb_restore,恢复所有数据。运行ndb_restore时必须包括--restore-epoch选项,以便正确填充
ndb_apply_status
table。 (有关更多信息,请参见第 21.4.24 节“ ndb_restore-还原 NDB 群集备份”。) -
从mysqldump的输出还原
ndb_binlog_index
table,并在必要时从备份还原二进制日志文件。 -
找到最近应用的时期(即
ndb_apply_status
table 中的最大epoch
列值)作为用户变量@LATEST_EPOCH
(强调):
SELECT @LATEST_EPOCH:=MAX(epoch)
FROM mysql.ndb_apply_status;
- 在
ndb_binlog_index
table 中找到与@LATEST_EPOCH
对应的最新二进制日志文件(@FIRST_FILE
)和位置(Position
列值)在该文件中:
SELECT Position, @FIRST_FILE:=File
FROM mysql.ndb_binlog_index
WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
- 使用mysqlbinlog,重播给定文件中的二进制日志事件,并将其定位到故障点。 (请参阅第 4.6.7 节“ mysqlbinlog-处理二进制日志文件的 Util”。)
另请参阅第 7.5 节“时间点(增量)恢复”,以获取有关二进制日志,复制和增量恢复的更多信息。