• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 使用NDB群集复制进行时间点恢复

    时间点恢复(即,自给定时间点以来所做的数据更改的恢复)是在还原完整备份后执行的,该备份将使服务器返回到进行备份时的状态。使用NDB群集和NDB群集执行NDB群集表的时间点恢复可以使用本机NDB数据备份(CREATE BACKUPndb_mgm客户端中发出)来恢复ndb_binlog_index表(从使用mysqldump创建的转储中)来完成复制。

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

    1. NDB使用ndb_mgm客户端中的START BACKUP命令备份群集中的所有数据库(请参见“ NDB群集的在线备份”)。
    2. 稍后,在还原群集之前,请备份mysql.ndb_binlog_index表。使用mysqldump进行此任务可能是最简单的。同时还备份二进制日志文件。

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

    3. 发生灾难性故障或错误。)
    4. 找到最后一个已知的良好备份。
    5. 清除数据节点文件系统(使用ndbd--initialndbmtd--initial)。

      注意

      不会删除NDB群集磁盘数据表空间和日志文件--initial。您必须手动删除它们。

    6. 与表一起使用DROP TABLE或。TRUNCATE TABLEmysql.ndb_binlog_index
    7. 执行ndb_restore,还原所有数据。--restore-epoch运行ndb_restore时必须包括该选项,以便ndb_apply_status正确填充该表。(有关更多信息,请参见“ndb_restore-还原NDB群集备份”。)
    8. ndb_binlog_indexmysqldump的输出还原表,并在必要时从备份还原二进制日志文件。
    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,从给定的文件重放二进制日志事件,并定位到故障点。(请参见“mysqlbinlog-用于处理二进制日志文件的实用程序”。)

    另请参见“使用二进制日志进行时间点(增量)恢复”,以获取有关二进制日志,复制和增量恢复的更多信息。