时间点 恢复,即恢复自给定时间点以来的数据更改,是在恢复完整的备份后进行的,该备份将服务器恢复到备份时其状态。 使用 NDB 集群和 NDB 集群复制对 NDB 集群表进行时间点恢复,可以使用本地 NDB
数据备份(通过在 ndb_mgm 客户端中发出 CREATE BACKUP
来进行)并恢复 ndb_binlog_index
表(从使用 mysqldump 创建的转储中进行)。
要执行 NDB 集群的时间点恢复,需要按照此处显示的步骤进行。
使用
START BACKUP
命令(在 ndb_mgm 客户端中,请参见 第 25.6.8 节,“NDB 集群的在线备份”)备份集群中的所有NDB
数据库。在恢复集群之前,在某个时间点备份
mysql.ndb_binlog_index
表。使用 mysqldump 完成此任务可能是最简单的。 同时备份二进制日志文件。应定期(可能甚至每小时)更新此备份,具体取决于您的需求。
(发生灾难性故障或错误.)
找到最后一个已知的良好备份。
清除数据节点文件系统(使用 ndbd
--initial
或 ndbmtd--initial
)。注意磁盘数据表空间和日志文件也会被
--initial
删除。使用
DROP TABLE
或TRUNCATE TABLE
处理mysql.ndb_binlog_index
表。执行 ndb_restore,恢复所有数据。 运行 ndb_restore 时,必须包含
--restore-epoch
选项,以便正确填充ndb_apply_status
表。 (有关更多信息,请参见 第 25.5.23 节,“ndb_restore — 恢复 NDB 集群备份”。)从 mysqldump 的输出中恢复
ndb_binlog_index
表,并在必要时从备份中恢复二进制日志文件。找到最近应用的纪元,即
ndb_apply_status
表中最大的epoch
列值,作为用户变量@LATEST_EPOCH
(强调)SELECT @LATEST_EPOCH:=MAX(epoch) FROM mysql.ndb_apply_status;
在
ndb_binlog_index
表中找到与@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,从给定的文件和位置重放二进制日志事件,直到故障发生为止。 (有关更多信息,请参见 第 6.6.9 节,“mysqlbinlog — 用于处理二进制日志文件的实用程序”。)
有关二进制日志、复制和增量恢复的更多信息,请参见 第 9.5 节,“时间点(增量)恢复”。