本实验在两台虚拟机上分别部署 DM8 数据库。源库在归档模式和 OPEN 状态下执行全库联机物理备份,将备份集传输至目标虚拟机;目标库停止后,使用 DMRMAN 生成映射文件,并依次执行 RESTORE、RECOVER 和 UPDATE DB_MAGIC,最后启动目标库并核对测试数据。
备份集目录:/dm/backup/full_bak_01
备份压缩包:/dm/backup/full_bak_01.tar.gz
目标库:dm.ini:/dm/data/EXAMDB/dm.ini
映射文件:/dm/backup/vm1_to_vm2_map.txt
DM 工具目录:/dm/dmdbms/bin
说明:两台虚拟机 IP 不同,因此两边数据库端口都使用 相同的端口号 不冲突;如果在同一台主机上运行两个实例,端口必须不同。
VM1 源库创建测试数据
→ 配置本地归档并执行全库联机物理备份
→ 使用 DMRMAN 校验、查看备份集并完成压缩
→ 通过 scp 将备份压缩包传输到 VM2
→ VM2 解压备份集并正常停止目标库
→ 生成映射文件并执行 RESTORE、RECOVER 和 UPDATE DB_MAGIC
→ 启动 VM2 数据库并核对测试数据
在源库 VM1 上执行:ping vm2
在目标 VM2 上执行:ping vm1
在源库 VM1 的 SQL 窗口执行以下语句:
create table T_DM_FULL_PHY_TEST(
ID int,
NAME varchar(100),
CREATE_TIME datetime
);
insert into T_DM_FULL_PHY_TEST values(1, '源库VM1全库物理备份测试数据1', sysdate);
insert into T_DM_FULL_PHY_TEST values(2, '源库VM1全库物理备份测试数据2', sysdate);
insert into T_DM_FULL_PHY_TEST values(3, '源库VM1全库物理备份测试数据3', sysdate);
commit;
select * from T_DM_FULL_PHY_TEST;
图 3 源库测试数据写入并查询成功
先检查源库归档状态:
select name, status$, arch_mode from v$database;
图 4 ARCH_MODE 为 N,表示当前未开启归档
如果 ARCH_MODE 为 N,按以下顺序开启归档:
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/dm/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=10240';
alter database open;
select name, status$, arch_mode from v$database;
图 5 ARCH_MODE 为 Y,表示归档已开启
说明:数据库切换到 MOUNT 状态后,先开启归档模式,再添加本地归档配置,最后将数据库切换回 OPEN 状态。
在源库 VM1 终端执行:
su - root
mkdir -p /dm/backup
mkdir -p /dm/arch
chown -R dmdba:dinstall /dm/backup
chown -R dmdba:dinstall /dm/arch
chmod -R 755 /dm/backup
chmod -R 755 /dm/arch
在源库 Manager 或 disql 中再次确认数据库处于 OPEN 状态且归档已开启:
select name, status$, arch_mode from v$database;
执行全库物理备份:
backup database full backupset '/dm/backup/full_bak_01';
在源库 VM1 启动 DMRMAN,依次执行备份集校验和信息查看命令:
/dm/dmdbms/bin/dmrman
CHECK BACKUPSET '/dm/backup/full_bak_01';
SHOW BACKUPSET '/dm/backup/full_bak_01';
exit;
退出 dmrman 后,在 Linux 终端压缩备份集:
cd /dm/backup
tar -czf full_bak_01.tar.gz full_bak_01
ls -lh /dm/backup/full_bak_01.tar.gz
先在目标 VM2 创建接收目录:
su - root
mkdir -p /dm/backup
chown -R dmdba:dinstall /dm/backup
chmod -R 755 /dm/backup
回到源库 VM1,将压缩包传输到目标 VM2。本实验目标端允许 root 用户通过 SSH 登录,因此使用 root 账号传输:
scp /dm/backup/full_bak_01.tar.gz root@ip地址:/dm/backup/
在目标 VM2 上解压备份包并授权:
cd /dm/backup
tar -xzf full_bak_01.tar.gz
ls -lh /dm/backup/full_bak_01
su - root
chown -R dmdba:dinstall /dm/backup
chmod -R 755 /dm/backup
确认目标库进程和配置文件路径:
ps -ef | grep dmserver | grep -v grep
本实验目标库配置文件:/dm/data/EXAMDB/dm.ini
执行全库物理还原前,必须正常停止目标 VM2 数据库。在 Manager 或 disql 中执行:
shutdown normal;
ps -ef | grep dmserver | grep -v grep
netstat -tunlp | grep
说明:当 dmserver 进程查询和端口监听查询均无输出时,表示目标库已停止,可以继续执行还原。
进入 dmrman,生成目标库映射文件:
/dm/dmdbms/bin/dmrman
DUMP BACKUPSET '/dm/backup/full_bak_01' DATABASE '/dm/data/EXAMDB/dm.ini' MAPPED FILE '/dm/backup/vm1_to_vm2_map.txt';
exit;
查看映射文件中的 data_path 配置,确认各数据文件路径均指向目标库实际目录:
grep -n "data_path" /dm/backup/vm1_to_vm2_map.txt
本实验目标数据文件目录:/dm/data/EXAMDB
确认目标库已停止后,进入 dmrman 并按顺序执行以下三步:
/dm/dmdbms/bin/dmrman
RESTORE DATABASE '/dm/data/EXAMDB/dm.ini' FROM BACKUPSET '/dm/backup/full_bak_01' MAPPED FILE '/dm/backup/vm1_to_vm2_map.txt';
RECOVER DATABASE '/dm/data/EXAMDB/dm.ini' FROM BACKUPSET '/dm/backup/full_bak_01';
RECOVER DATABASE '/dm/data/EXAMDB/dm.ini' UPDATE DB_MAGIC;
exit;
在目标 VM2 上启动数据库:
su - dmdba
nohup /dm/dmdbms/bin/dmserver path=/dm/data/EXAMDB/dm.ini -noconsole > /dm/data/EXAMDB/dmserver_start.log 2>&1 &
tail -f /dm/data/EXAMDB/dmserver_start.log
物理还原后,使用该口令连接目标库:
/dm/dmdbms/bin/disql SYSDBA/密码@本机ip:端口号
查询测试表,验证 VM1 的数据已经恢复到 VM2:
select * from T_DM_FULL_PHY_TEST;
图 13 目标 VM2 查询到源库测试数据
文章
阅读量
获赞
