签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦 数据库 数据守护(Data Watch) (14) -- DW的备库重建

2019-09-14 22:40 2360 0 原创 DM 达梦
作者: dave

当备库所在硬件出现故障、或者数据库文件损坏导致数据损毁时,可以按照搭建数据守护的方式重建备库。

1 直接通过备份

下面以备库 B 数据损坏,重新配置数据为例,说明备库重建流程:http://www.cndba.cn/cndba/dave/article/3684

1. 重新初始化数据库
./dminit path=/dm7/data

2. 启动 DIsql 登录主库 A,执行联机备份
SQL> BACKUP DATABASE FULL BACKUPSET '/dm7/data/BACKUP_FILE_01';

3. 将备份文件拷贝至 B 所在的机器上,执行脱机还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm7/data/DAMENG/dm.ini' FROM BACKUPSET '/dm7/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm7/data/DAMENG/dm.ini' FROM BACKUPSET '/dm7/data/BACKUP_FILE_01'"

4.重新配置 B 的 dm.ini、dmmal.ini、dmarch.ini 和 dmwatcher.ini 配置文件,并拷贝主库的 dmwatcher.ctl 文件

5. 以 mount 方式启动 B
./dmserver /dm7/data/DAMENG/dm.ini mount

6. DIsql 登录 B,设置 OGUID
SQL>sp_set_oguid(82379);

7. 修改数据库模式为 Standby
由于备份文件中会保留备份库的模式信息,因此对 B 执行还原恢复成功后,B 当前的模式还是 Primary,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第 1 步
SQL>alter database standby; ----第 2 步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第 3 步

8. 启动 B 的守护进程
./dmwatcher /dm7/data/DAMENG/dmwatcher.ini
执行以上步骤后,恢复 B 的准备过程已经完成。

接下来,数据守护系统会将 B 作为备库重加入数据守护系统,A 的守护进程会自动通知同步数据到 B,最终恢复主备库数据到一致状态。http://www.cndba.cn/cndba/dave/article/3684http://www.cndba.cn/cndba/dave/article/3684

2 通过备份加归档

如果数据规模比较大、联机备份耗时较长、应用压力比较大的情况下,主库联机备份、备库脱机还原过程中,主库可能又新产生了大量归档日志。使用上述步骤重建备库后,主库向备库同步历史数据的时间会比较久,主备库数据在比较长的一段时间内处于不一致状态。

用户还可以利用归档备份、还原和归档恢复功能,将备库数据恢复到更加接近主库的最新状态,有效减少备库加入主备系统后的历史数据同步时间。执行步骤如下:http://www.cndba.cn/cndba/dave/article/3684

http://www.cndba.cn/cndba/dave/article/3684

1) 重新初始化数据库
./dminit path=/dm7/data

2) 启动 DIsql 登录主库 A,执行联机备份
SQL> BACKUP DATABASE FULL BACKUPSET '/dm7/data/BACKUP_FILE_02' WITHOUT LOG;

3) 将备份文件拷贝至 B 所在的机器上,执行脱机还原
./dmrman CTLSTMT="RESTORE DATABASE '/dm7/data/DAMENG/dm.ini' FROM BACKUPSET '/dm7/data/BACKUP_FILE_02'"

4) 启动 DIsql 登录主库 A,查看备份集的 BEGIN_LSN,并从 BEGIN_LSN 开始备份主库的归档日志。(这里假设查询到的备份集 BEGIN_LSN 是 38491)
SQL> SELECT BACKUP_NAME,BEGIN_LSN FROM V$BACKUPSET;
SQL> BACKUP ARCHIVE LOG FROM LSN 38491 BACKUPSET '/dm7/data/ARCH_BAK_02';

5) 将归档备份集拷贝至 B 所在的机器,还原归档后、利用这些归档日志进行数据库恢复
./dmrman CTLSTMT="RESTORE ARCHIVE LOG FROM BACKUPSET '/dm7/data/ARCH_BAK_02' TO ARCHIVEDIR '/dm7/data/arch'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm7/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dm7/data/arch'"

6)重新配置 B 的 dm.ini、dmmal.ini、dmarch.ini 和 dmwatcher.ini 配置文件,并拷贝主库的 dmwatcher.ctl 文件

7) 以 mount 方式启动 B
./dmserver /dm7/data/DAMENG/dm.ini mount

8) DIsql 登录 B,设置 OGUID
SQL>sp_set_oguid(82379);

9) 修改数据库模式为 Standby
由于备份文件中会保留备份库的模式信息,因此对 B 执行还原恢复成功后,B 当前的模式还是 Primary,需要先修改 dm.ini 中 ALTER_MODE_STATUS 值为 1,允许修改数据库模式,修改 Standby 模式成功后再改回为 0。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); ----第 1 步
SQL>alter database standby; ----第 2 步
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); ----第 3 步

10) 启动 B 的守护进程
./dmwatcher /dm7/data/DAMENG/dmwatcher.ini

3 小结

以上2个操作是官方提供的示例,这个过程就是一个数据守护备库的搭建过程,唯一缺少的部分就是服务注册。 操作步骤是一样的。 http://www.cndba.cn/cndba/dave/article/3684

http://www.cndba.cn/cndba/dave/article/3684

具体可以参考:http://www.cndba.cn/cndba/dave/article/3684

DM7 达梦 数据库 数据守护(Data Watch) (6) — 实时主备环境搭建
https://www.cndba.cn/dave/article/3675
DM7 达梦 数据库 数据守护(Data Watch) (7) — 读写分离集群搭建
https://www.cndba.cn/dave/article/3677
DM7 达梦 数据库 数据守护(Data Watch) (8) — MPP主备环境搭建
https://www.cndba.cn/dave/article/3678
DM7 达梦 数据库 数据守护(Data Watch) (9) — 异步备份环境搭建
https://www.cndba.cn/dave/article/3679http://www.cndba.cn/cndba/dave/article/3684http://www.cndba.cn/cndba/dave/article/3684

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2283
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8176848次
  • 积分:4428
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ