文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  使用 NDB 集群复制进行时间点恢复

25.7.9.2 使用 NDB 集群复制进行时间点恢复

时间点 恢复,即恢复自给定时间点以来的数据更改,是在恢复完整的备份后进行的,该备份将服务器恢复到备份时其状态。 使用 NDB 集群和 NDB 集群复制对 NDB 集群表进行时间点恢复,可以使用本地 NDB 数据备份(通过在 ndb_mgm 客户端中发出 CREATE BACKUP 来进行)并恢复 ndb_binlog_index 表(从使用 mysqldump 创建的转储中进行)。

要执行 NDB 集群的时间点恢复,需要按照此处显示的步骤进行。

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

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

    应定期(可能甚至每小时)更新此备份,具体取决于您的需求。

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

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

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

    注意

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

  6. 使用 DROP TABLETRUNCATE TABLE 处理 mysql.ndb_binlog_index 表。

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

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

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

    SELECT @LATEST_EPOCH:=MAX(epoch)
        FROM mysql.ndb_apply_status;
  10. 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;
  11. 使用 mysqlbinlog,从给定的文件和位置重放二进制日志事件,直到故障发生为止。 (有关更多信息,请参见 第 6.6.9 节,“mysqlbinlog — 用于处理二进制日志文件的实用程序”。)

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