目录
1、概述
1.1 实验场景
1.2 实验环境
2、故障模拟
3、重建方案1
3.1 登录主库、联机备份
3.2 脱机还原备库
3.3 模拟新业务数据
3.4 主库备份归档
3.5 利用归档恢复备库
3.6 启动备库
3.7 验证
4、重建方案2
4.1 登录主库、联机备份
4.2 脱机还原备库
4.3 模拟新业务数据
4.4 查看归档
4.5 利用归档恢复备库
4.6 启动备库
4.7 验证
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