Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

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

点时 恢复——即恢复自给定时间点以来的数据更改——是在恢复完整备份后执行的,以将服务器恢复到备份时的状态。使用 NDB 集群和 NDB 集群复制执行点时恢复 NDB 集群表,可以使用本机 NDB 数据备份(使用 CREATE BACKUPndb_mgm 客户端中)和恢复 ndb_binlog_index 表(使用 mysqldump 生成的转储)。

要执行 NDB 集群的点时恢复,需要按照以下步骤进行:

  1. 备份集群中的所有 NDB 数据库,使用 START BACKUP 命令在 ndb_mgm 客户端中(见 第 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 — 恢复 NDB 集群备份”,以获取更多信息。)

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

  9. 找到最近应用的 epoch(即 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 节,“点时间(增量)恢复”,以获取更多关于二进制日志、复制和增量恢复的信息。