围绕 DM8 数据库 DSC 集群与单机之间的整库备份还原,梳理并验证四个操作方向:非镜像 DSC 备份还原到单机、单机备份还原到非镜像 DSC、镜像 DSC 备份还原到单机、单机备份还原到镜像 DSC。内容覆盖镜像与非镜像 DSC 场景下的跨架构恢复流程,旨在形成可复用的操作规范,为数据库迁移、灾备恢复和日常运维提供参考。
概述
(1)非镜像 DSC 备份还原到单机
(2)单机备份还原到非镜像DSC
(3)镜像 DSC 备份还原到单机
(4)单机备份还原到镜像DSC
一、非镜像 DSC 备份还原到单机
1.1 不指定归档
库恢复到备份结束时刻。
cd /home/dmdba/dm/dmdbms/bin
./dmrman use_ap=2 dcr_ini=/home/dmdba/dm/dm_config/dmdcr.ini
RMAN> BACKUP DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FULL BACKUPSET '/dbbak/dsc_full_bak';
未安装 license 时提示使用默认许可,不影响备份。
scp -r dsc_full_bak/ dmdba@192.168.40.150:/dbbak/
传输完成后核对文件数,大文件用 md5sum 两侧比对。
cd /home/dmdba/dm/dmdbms/bin
RMAN> CHECK BACKUPSET '/dbbak/dsc_full_bak';
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';
图 5 恢复成功,提示 DM[603]
DM[603] 表示备份期间未产生日志,命令执行成功。
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
SELECT FILE_NAME FROM DBA_DATA_FILES;
路径应位于 /dmdata/data/DAMENG/ 下。出现 +DMDATA/DAMENG/ 或其它机器的目录,说明还原时 dm.ini 指向错误。
1.2 指定归档
恢复到最新时刻需额外备份归档日志。
RMAN> BACKUP ARCHIVELOG ALL DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';
先全备、后备归档。
scp -r /dbbak/dsc_full_bak /dbbak/dsc_arch_bak dmdba@192.168.40.150:/dbbak/
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_full_bak';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
WITH ARCHIVEDIR 填归档文件目录 /dmdata/arch,不能填备份集目录。归档未解出时可以先执行:
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '/dmdata/arch/' OVERWRITE 1;
二、非镜像单机备份还原到 DSC
2.1 不指定归档
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';
scp -r single_full_bak/ dmdba@<DSC_HOST>:/dbbak/
cd /home/dmdba/dm/dmdbms/bin
./dmrman use_ap=2 DCR_INI=/home/dmdba/dm/dm_config/dmdcr.ini
RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';
目标端 dm.ini 使用节点的 conf0/dm.ini,dmrman 需带 DCR_INI 才能定位集群配置。
SELECT FILE_NAME FROM DBA_DATA_FILES;
数据文件需位于共享存储。
2.2 指定归档
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';
RMAN> BACKUP ARCHIVELOG ALL DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';
scp -r /dbbak/single_full_bak /dbbak/dsc_arch_bak dmdba@<DSC_HOST>:/dbbak/
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '/dbbak/dsc_arch_bak';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;
DM[601] No matched archivelog file 表示指定目录无匹配当前 LSN 的归档。全备后库内无写入时,不应用日志也可启动。
三、镜像 DSC 备份恢复到单机
3.1 不指定归档
镜像库数据文件位于 ASM,直接还原到单机会按 ASM 路径查找文件,须导出映射文件改写路径。
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/dsc_mirror_full_bak';
RMAN> BACKUP DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FULL BACKUPSET '/dbbak/dsc_mirror_full_bak';
cd /home/dmdba/dm/dmdbms/bin
./dmrman use_ap=2 DCR_INI=/home/dmdba/dm/dm_config/dmdcr.ini
RMAN> DUMP BACKUPSET '/dbbak/dsc_mirror_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_01.txt';
vi /home/dmdba/dm/dm_config/conf0/map_file_01.txt
字段 镜像 DSC → 单机 单机 → 镜像 DSC
data_path /dmdata/data/DAMENG/xxx.dbf +DMDATA/DAMENG/xxx.dbf
mirror_path 清空 按目标 ASM 填写
data_mirror 1 2
data_striping 0 64(按照环境的条带化写)
fil_id、ts_id、ts_name 不变 不变
批量替换 path:
bash
:%s#+DMDATA/DAMENG#/dmdata/data/DAMENG#g
scp -r /dbbak/dsc_mirror_full_bak dmdba@192.168.40.150:/dbbak/
scp /home/dmdba/dm/dm_config/conf0/map_file_01.txt dmdba@192.168.40.150:/dbbak/
映射文件内是目标机路径。仅传备份集时 RESTORE 按 ASM 路径查找文件并失败。
RMAN> CHECK BACKUPSET '/dbbak/dsc_mirror_full_bak';
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak' MAPPED FILE '/dbbak/map_file_01.txt';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
6) 核对数据文件路径
SELECT FILE_NAME FROM DBA_DATA_FILES;
3.2 指定归档
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/dsc_mirror_full_bak';
RMAN> BACKUP ARCHIVELOG ALL DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';
RMAN> DUMP BACKUPSET '/dbbak/dsc_mirror_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_01.txt';
改写方法同 3.1 第 3 步。
scp -r /dbbak/dsc_mirror_full_bak /dbbak/dsc_arch_bak dmdba@192.168.40.150:/dbbak/
scp /home/dmdba/dm/dm_config/conf0/map_file_01.txt dmdba@192.168.40.150:/dbbak/
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dbbak/dsc_mirror_full_bak' MAPPED FILE '/dbbak/map_file_01.txt';
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '/dmdata/arch/' OVERWRITE 1;
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch';
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
WITH ARCHIVEDIR 填备份集目录 /dbbak/dsc_arch_bak 会报 DM[-8374] 归档文件路径下未收集到有效的归档文件,应填解出的归档目录 /dmdata/arch。RECOVER 的 dm.ini 在单机端为 /dmdata/data/DAMENG/dm.ini。
四、镜像单机备份还原到 DSC
4.1 不指定归档
RMAN> BACKUP DATABASE BACKUPSET '/dbbak/single_for_mirror_bak';
scp -r single_for_mirror_bak/ dmdba@<DSC_HOST>:/dbbak/
RMAN> DUMP BACKUPSET '/dbbak/single_for_mirror_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';
DUMP 在目标端执行,DATABASE 指向目标库 dm.ini,生成的 data_path 为 +DMDATA/DAMENG/。在源端导出得到本地路径,需再改回 ASM 路径。
vi ~/dm_config/conf0/map_file_mirror.txt
data_mirror 改为 2
单机备份集内 data_mirror 为 1、data_striping 为 0。目标 ASM 按实际配置填写,示例为 2 与 64。填写错误时 RESTORE 建文件失败。
RMAN> CHECK BACKUPSET '/dbbak/single_for_mirror_bak';
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_for_mirror_bak' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_for_mirror_bak';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;
4.2 指定归档
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dbbak/single_full_bak';
RMAN> BACKUP ARCHIVELOG ALL DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dbbak/dsc_arch_bak';
scp -r /dbbak/single_full_bak /dbbak/dsc_arch_bak dmdba@<DSC_HOST>:/dbbak/
RMAN> DUMP BACKUPSET '/dbbak/single_full_bak' DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';
RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' FROM BACKUPSET '/dbbak/single_full_bak' MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '/dbbak/dsc_arch_bak';
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;
未解归档时 WITH ARCHIVEDIR 直接指向备份集目录,可正常恢复。归档日志更准确的做法是先解到归档目录,再恢复指向该目录。
RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1' OVERWRITE 1;
然后再
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' WITH ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1' ;
DSC 恢复完整流程:
-- 1) 校验两个备份
RMAN> CHECK BACKUPSET '/dbbak/single_full_bak';
RMAN> CHECK BACKUPSET '/dbbak/dsc_arch_bak';
-- 2) 还原数据库
RMAN> RESTORE DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini'
FROM BACKUPSET '/dbbak/single_full_bak'
MAPPED FILE '/home/dmdba/dm/dm_config/conf0/map_file_mirror.txt';
-- 3) 还原归档:目标目录还原
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH0' OVERWRITE 3;
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dbbak/dsc_arch_bak' TO ARCHIVEDIR '+DATA/ARCH1' OVERWRITE 3;
-- 4) 恢复:这里多目录是合法的
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini'
WITH ARCHIVEDIR '+DATA/ARCH0','+DATA/ARCH1';
-- 5) 更新魔数
RMAN> RECOVER DATABASE '/home/dmdba/dm/dm_config/conf0/dm.ini' UPDATE DB_MAGIC;
文章
阅读量
获赞
