时间点
恢复——即恢复自给定时间点以来所做的数据更改——在恢复完整备份后执行,该备份将服务器返回到备份时的状态。使用 NDB Cluster 和 NDB Cluster Replication 执行 NDB Cluster 表的时间点恢复可以使用本机NDB
数据备份(通过CREATE
BACKUP
在ndb_mgm客户端中发布)和恢复ndb_binlog_index
表(从使用mysqldump制作的转储)来完成。
要执行 NDB Cluster 的时间点恢复,必须遵循此处显示的步骤:
使用ndb_mgm客户端 中的命令备份 cluster 中的 所有
NDB
数据库(请参阅 第 21.6.8 节,“NDB Cluster 的在线备份”)。START BACKUP
稍后,在恢复集群之前,备份
mysql.ndb_binlog_index
表。使用 mysqldump完成此任务可能是最简单的。同时备份二进制日志文件。应根据您的需要定期(甚至每小时)更新此备份。
(发生灾难性故障或错误。)
找到最后一个已知的良好备份。
清除数据节点文件系统(使用 ndbd
--initial
或 ndbmtd--initial
)。笔记NDB Cluster Disk Data 表空间和日志文件不会被删除
--initial
。您必须手动删除这些。与 表 一起 使用
DROP TABLE
或 。TRUNCATE TABLE
mysql.ndb_binlog_index
执行ndb_restore,恢复所有数据。
--restore-epoch
运行ndb_restore时必须包括该 选项,以便ndb_apply_status
正确填充表。(有关更多信息,请参阅 第 21.5.24 节,“ndb_restore — 恢复 NDB Cluster 备份”。)如有必要,从 mysqldump
ndb_binlog_index
的输出中 恢复表并从备份中恢复二进制日志文件。找到最近应用的纪元——即表
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_index WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
使用mysqlbinlog重播给定文件中的二进制日志事件并定位到故障点。(参见第 4.6.7 节,“mysqlbinlog — 处理二进制日志文件的实用程序”。)
有关二进制日志、复制和增量恢复的更多信息, 另请参阅第 7.5 节,“时间点(增量)恢复” 。