Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Point-In-Time Recovery Using NDB Cluster Replication

25.7.9.2 NDB 集群基于时间点的恢复

基于时间点的恢复,即恢复自特定时间点以来的数据变更,可以在将服务器恢复到备份创建时的状态后进行。使用 NDB 集群和 NDB 集群复制对 NDB 集群表执行基于时间点的恢复,可以通过原生的 NDB 数据备份来实现(使用 CREATE BACKUP 命令在 ndb_mgm 客户端中执行)以及恢复 ndb_binlog_index 表(使用 mysqldump 进行的备份)。

要对 NDB 集群执行基于时间点的恢复,需要遵循以下步骤:

  1. 首先,在 ndb_mgm 客户端中使用 START BACKUP 命令对所有 NDB 数据库进行备份(请参阅 第 25.6.8 章节,“NDB 集群的在线备份”)。

  2. 在恢复集群之前,务必备份 mysql.ndb_binlog_index 表格。使用mysqldump 可能是最简单的方法。此外,在这个时间点还应该备份二进制日志文件。

    这个备份应当定期更新——可能每小时一次——取决于您的需求。

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

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

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

    Note

    磁盘数据表空间和日志文件也会被--initial清除。

  6. 使用 DROP TABLETRUNCATE TABLE 删除 mysql.ndb_binlog_index 表格。

  7. 执行ndb_restore,恢复所有数据。在运行ndb_restore时,您必须包括--restore-epoch选项,以确保ndb_apply_status表被正确填充。请参阅第25.5.23节,“ndb_restore — Restore an NDB Cluster Backup”,获取更多信息。

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

  9. 找到最近应用的纪元,即ndb_apply_status表中的最大epoch列值作为用户变量@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从给定的文件和位置重新播放二进制日志事件,直到故障点。 (参见第6.6.9节,“mysqlbinlog — 二进制日志文件处理工具”。)

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