Documentation Home

21.7.9.2 使用 NDB Cluster 复制的时间点恢复

时间点 恢复——即恢复自给定时间点以来所做的数据更改——在恢复完整备份后执行,该备份将服务器返回到备份时的状态。使用 NDB Cluster 和 NDB Cluster Replication 执行 NDB Cluster 表的时间点恢复可以使用本机NDB数据备份(通过CREATE BACKUPndb_mgm客户端中发布)和恢复ndb_binlog_index表(从使用mysqldump制作的转储)来完成。

要执行 NDB Cluster 的时间点恢复,必须遵循此处显示的步骤:

  1. 使用ndb_mgm客户端 中的命令备份 cluster 中的 所有NDB数据库(请参阅 第 21.6.8 节,“NDB Cluster 的在线备份”)。 START BACKUP

  2. 稍后,在恢复集群之前,备份mysql.ndb_binlog_index 表。使用 mysqldump完成此任务可能是最简单的。同时备份二进制日志文件。

    应根据您的需要定期(甚至每小时)更新此备份。

  3. 发生灾难性故障或错误。)

  4. 找到最后一个已知的良好备份。

  5. 清除数据节点文件系统(使用 ndbd --initialndbmtd --initial)。

    笔记

    NDB Cluster Disk Data 表空间和日志文件不会被删除--initial。您必须手动删除这些。

  6. 与 表 一起 使用DROP TABLE或 。TRUNCATE TABLEmysql.ndb_binlog_index

  7. 执行ndb_restore,恢复所有数据。--restore-epoch运行ndb_restore时必须包括该 选项,以便 ndb_apply_status正确填充表。(有关更多信息,请参阅 第 21.5.24 节,“ndb_restore — 恢复 NDB Cluster 备份”。)

  8. 如有必要,从 mysqldumpndb_binlog_index的输出中 恢复表并从备份中恢复二进制日志文件。

  9. 找到最近应用的纪元——即表epoch中的最大列值 ndb_apply_status——作为用户变量@LATEST_EPOCH(强调):

    SELECT @LATEST_EPOCH:=MAX(epoch)
        FROM mysql.ndb_apply_status;
  10. 查找最新的二进制日志文件( )和该文件中与 表中对应的@FIRST_FILE位置(列值) : Position@LATEST_EPOCHndb_binlog_index

    SELECT Position, @FIRST_FILE:=File
        FROM mysql.ndb_binlog_index
        WHERE epoch > @LATEST_EPOCH ORDER BY epoch ASC LIMIT 1;
  11. 使用mysqlbinlog重播给定文件中的二进制日志事件并定位到故障点。(参见第 4.6.7 节,“mysqlbinlog — 处理二进制日志文件的实用程序”。)

有关二进制日志、复制和增量恢复的更多信息, 另请参阅第 7.5 节,“时间点(增量)恢复” 。