使用NDB群集复制进行时间点恢复
时间点恢复(即,自给定时间点以来所做的数据更改的恢复)是在还原完整备份后执行的,该备份将使服务器返回到进行备份时的状态。使用NDB群集和NDB群集执行NDB群集表的时间点恢复可以使用本机NDB
数据备份(CREATE BACKUP
在ndb_mgm客户端中发出)来恢复ndb_binlog_index
表(从使用mysqldump创建的转储中)来完成复制。
要执行NDB群集的时间点恢复,必须遵循此处显示的步骤:
NDB
使用ndb_mgm客户端中的START BACKUP
命令备份群集中的所有数据库(请参见“ NDB群集的在线备份”)。稍后,在还原群集之前,请备份
mysql.ndb_binlog_index
表。使用mysqldump进行此任务可能是最简单的。同时还备份二进制日志文件。该备份应定期更新(甚至每小时一次),具体取决于您的需求。
- (发生灾难性故障或错误。)
- 找到最后一个已知的良好备份。
清除数据节点文件系统(使用ndbd
--initial
或ndbmtd--initial
)。注意
不会删除NDB群集磁盘数据表空间和日志文件
--initial
。您必须手动删除它们。- 与表一起使用
DROP TABLE
或。TRUNCATE TABLE
mysql.ndb_binlog_index
- 执行ndb_restore,还原所有数据。
--restore-epoch
运行ndb_restore时必须包括该选项,以便ndb_apply_status
正确填充该表。(有关更多信息,请参见“ndb_restore-还原NDB群集备份”。) ndb_binlog_index
从mysqldump的输出还原表,并在必要时从备份还原二进制日志文件。找到最近应用的时期(即表中的最大
epoch
列值)ndb_apply_status
作为用户变量@LATEST_EPOCH
(强调):SELECT @LATEST_EPOCH:=MAX(epoch)FROM mysql.ndb_apply_status;找到最新的二进制日志文件(
@FIRST_FILE
)及位置(Position
在此文件中列的值),对应@LATEST_EPOCH
的ndb_binlog_index
表:SELECT Position, @FIRST_FILE:=File FROM mysql.ndb_binlog_indexWHERE epoch > @LATEST_EPOCHORDER BY epochASC LIMIT 1;- 使用mysqlbinlog,从给定的文件重放二进制日志事件,并定位到故障点。(请参见“mysqlbinlog-用于处理二进制日志文件的实用程序”。)
另请参见“使用二进制日志进行时间点(增量)恢复”,以获取有关二进制日志,复制和增量恢复的更多信息。