数据恢复

    • 恢复当前集群中的节点:执行数据恢复必须确保该节点对应的数据组已停止运行,数据恢复首先会清空原节点的所有数据和日志,然后从备份的数据中恢复配置、数据和日志。
    • 恢复到离线数据:可以将全量备份和增量备份的数据不断合并成一份与节点内数据完全相同格式的离线数据,可以在原节点故障后使用该离线数据实现快速恢复。

    使用 sdbrestore 可以进行数据恢复,以下是 sdbrestore 的常用参数:

    1. 连接到协调节点

    2. 得到分区组

      1. > dataRG = db.getRG( "group1" )
    3. 通过终端登入相应分区组的数据节点,执行数据恢复。

      1. sdbadmin@hostname1:/opt/sequoiadb> bin/sdbrestore -p database/11820/bakfile -n test_bk
      2. Check sequoiadb(11820) is not running...OK
      3. Begin to clean dps logs...
      4. Begin to clean dms storages...
      5. Begin to restore...
      6. Begin to restore data file: 11820/bakfile/test_bk.1 ...
      7. Begin to restore su: test.1.data ...
      8. Begin to restore dps logs...
      9. Begin to wait repl bucket empty...
      10. *****************************************************
      11. Restore succeed!
      12. *****************************************************
    4. 到数据节点目录检查文件是否恢复。

    5. 恢复分区组其他节点数据,恢复方式有以下几种:

      1) 删除该分区组中其它数据节点的所有.data 和 .idx 、.lobd、.lobm文件以及replicalog 日志,节点启动后会自行同步数据。

      2) 拷贝恢复节点的所有 .data 和 .idx 、.lobd、.lobm文件拷贝至其它数据节点的数据目录和索引目录下,以及将该节点的所有 replicalog 日志拷贝至其它数据节点的 replicalog 日志目录下。

    1. 准备用于恢复离线数据的目录

      假定目录为: /backupdata/11820

    2. 通过终端登入相应的节点,执行数据恢复。

      1. sdbadmin@hostname1:/opt/sequoiadb> bin/sdbrestore -p database/11820/bakfile -n test_bk -s true --isSelf false --dbpath /backupdata/11820 --svcname 11820
      2. Begin to clean dps logs...
      3. Begin to clean dms storages...
      4. Begin to restore...
      5. Begin to restore data file: 11820/bakfile/test_bk.1 ...
      6. Begin to restore su: test.1.data ...
      7. Begin to restore su: test.1.idx ...
      8. Begin to restore dps logs...
      9. Begin to wait repl bucket empty...
      10. *****************************************************
      11. Restore succeed!
      12. *****************************************************
    3. 到目录检查文件是否恢复。

    4. 可以通过周期性备份 + 周期性恢复,能够实现节点数据的离线同步,在节点故障时快速进行恢复。