目录
1、概述
1.1 实验场景
上一篇博文《达梦数据守护集群_组分裂的数据恢复(一)》,试验了发生组分裂后,使用“故障前的备份集”恢复备库的方法。上篇文章中提到的备库重建方法和本文要讨论的备库重建方法,不限于组分裂后的备库重建,其他故障类型的备库重建也可以使用这些方法。
本文要讨论的场景如下:
在生产系统中,使用联机备份、脱机还原的方法重建备库。当数据规模比较大、联机备份耗时较长、应用压力比较大的情况下,主库联机备份、备库脱机还原过程中,主库可能又新产生了大量归档日志。使用上述步骤重建备库后,主库向备库同步历史数据的时间会比较久,主备库数据会在比较长的一段时间内处于不一致状态。
对这种情况,可以通过归档备份、还原和归档恢复功能,将备库数据恢复到更加接近主库的最新状态,有效减少备库加入主备系统后的历史数据同步时间。
1.2 实验环境
操作系统:CentOS7.6
达梦数据库版本:DM8_20240712
达梦守护集群版本:V4.0
集群主库(1号库):192.168.220.101
集群备库(2号库):192.168.220.102
集群确认监视器:192.168.220.109
2、故障模拟
模拟备库192.168.220.102发生故障
1)登录备库,查看进程号
ps -ef|grep dmdba
2)制造备库故障
kill -9 7158
kill -9 7160
rm /dm8/datadm/DM8DW/MAIN.DBF
3、重建方案1
3.1 登录主库、联机备份
disql SYSDBA/SYSDBA:6236
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_20241026_01' WITHOUT LOG;
3.2 脱机还原备库
使用scp 将备份集发送到备库,在主库执行
scp -r ./full_20241026_01/ 192.168.220.102:/dm8/backup/
脱机还原,在备库执行
dmrman
restore database '/dm8/datadm/DM8DW/dm.ini' from backupset '/dm8/backup/full_20241026_01';
3.3 模拟新业务数据
登录主库,模拟新业务数据
disql SYSDBA/SYSDBA:6236
create table tb_t1026
(
c1 varchar2(10),
c2 varchar2(10)
);
insert into tb_t1026 values('aaa','1111');
insert into tb_t1026 values('bbb','222');
commit;
3.4 主库备份归档
1)查看备份集LSN
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup');
select backup_name,backup_path,begin_lsn from v$backupset;
2)备份归档
BACKUP ARCHIVE LOG FROM LSN 66685 BACKUPSET '/dm8/backup/ARCH_BAK_20241026_01';
3.5 利用归档恢复备库
1)主库执行
使用scp 将备份集发送到备库
scp -r ./ARCH_BAK_20241026_01/ 192.168.220.102:/dm8/backup/
2)备库执行
开始重建备库
dmrman
restore ARCHIVE LOG FROM BACKUPSET '/dm8/backup/ARCH_BAK_20241026_01' to ARCHIVEDIR '/dm8/archdm';
recover database '/dm8/datadm/DM8DW/dm.ini' with archivedir '/dm8/archdm';
recover database '/dm8/datadm/DM8DW/dm.ini' update db_magic;
3.6 启动备库
执行启动服务命令
DmServiceDM8DW02 start
DmWatcherServiceDM8DW02 start
3.7 验证
在备库执行
disql SYSDBA/SYSDBA:6236
SELECT * FROM tb_t1026;
备库重建成功!
4、重建方案2
方案2与方案1的流程基本相同。区别是:方案1将归档文件备份到“备份集”中再发送给备库;方案2是直接将归档文件发送给备库。
4.1 登录主库、联机备份
disql SYSDBA/SYSDBA:6236
BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full_20241026_02';
4.2 脱机还原备库
使用scp 将备份集发送到备库,在主库执行
scp -r ./full_20241026_02/ 192.168.220.102:/dm8/backup/
脱机还原,在备库执行
dmrman
restore database '/dm8/datadm/DM8DW/dm.ini' from backupset '/dm8/backup/full_20241026_02';
4.3 模拟新业务数据
登录主库,模拟新业务数据
disql SYSDBA/SYSDBA:6236
create table tb_t1026_02
(
c1 varchar2(10),
c2 varchar2(10)
);
insert into tb_t1026_02 values('aaa','1111');
insert into tb_t1026_02 values('bbb','222');
commit;
4.4 查看归档
登录主库,查看归档,根据归档生成的时间判断需要哪些归档文件
4.5 利用归档恢复备库
1)主库执行
scp /dm8/archdm/ARCHIVE_LOCAL1* 192.168.220.102:/dm8/archdm
2)备库执行
开始重建备库
dmrman
recover database '/dm8/datadm/DM8DW/dm.ini' with archivedir '/dm8/archdm';
recover database '/dm8/datadm/DM8DW/dm.ini' update db_magic;
4.6 启动备库
执行启动服务命令
DmServiceDM8DW02 start
DmWatcherServiceDM8DW02 start
4.7 验证
在备库执行
disql SYSDBA/SYSDBA:6236
SELECT * FROM tb_t1026_02;
备库重建成功!
本文结束
参考文档《DM8数据守护与读写分离集群V4.0》
20241026