经达梦数据库DCP课程培训,系统学习了达梦数据库全库备份及时间点还原过程,经本人反复测试并验证,现将过程整理如下。(如有不足之处,敬请指正)
一、达梦数据库安装。(略)
二、开启数据库归档。
1.查看数据库实例名、开启状态:
SQL> select instance_name,status$ from v$instance;
行号 INSTANCE_NAME STATUS$
---------- ------------- -------
1 DMSVR01 OPEN
2.检查数据库归档模式是否开启:
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 N
3.将归档切换为mount状态,因为切换归档模式需要在mount状态下进行。
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.748. 执行号:0.
SQL> select instance_name,status$ from v$instance;
行号 INSTANCE_NAME STATUS$
---------- ------------- -------
1 DMSVR01 MOUNT
4.修改数据库归档模式为"Y":
SQL> alter database archivelog;
操作已执行
已用时间: 2.580(毫秒). 执行号:0.
SQL> select arch_mode from v$database;
行号 ARCH_MODE
---------- ---------
1 Y
此时数据库归档模式已开启。
5.在服务器创建一个空目录,用于存放归档。
[dmdba@ky-dm8-jk134 dm8]$ mkdir -p /dm8/arch
[dmdba@ky-dm8-jk134 dm8]$ ls -l /dm8/arch
总用量 0
归档存放目录可自定义,但应便于识别。
6.给数据库添加归档存放路径。
SQL> alter database add archivelog 'DEST=/dm8/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=0';
操作已执行
已用时间: 21.229(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 00:00:01.811. 执行号:0.
SQL> select instance_name,status$ from v$instance;
行号 INSTANCE_NAME STATUS$
---------- ------------- -------
1 DMSVR01 OPEN
此时归档设置已经完成,这时可以在线备份数据库了。
三、给数据库创建实时备份。
1.在数据库服务器上创建备份路径"/dm8/bak"。
[dmdba@ky-dm8-jk134 dm8]$ mkdir -p /dm8/bak
[dmdba@ky-dm8-jk134 dm8]$ ls -l /dm8/bak
总用量 0
2.登陆达梦manager工具:
3.选择库备份,修改备份名、备份路径、备份路径,然后单击确定。
4.备份完成后,查看数据库备份文件。
[dmdba@ky-dm8-jk134 dm8]$ cd /dm8/bak
[dmdba@ky-dm8-jk134 bak]$ ls
bak_1.bak bak.bak bak.meta
这时/dm8/bak下面已存在备份文件。
四、测试备份实时恢复。
1.创建表T1,并插入三条数据。
SQL> create table T1(ID INT,NAME VARCHAR(20));
操作已执行
已用时间: 110.302(毫秒). 执行号:408.
SQL>
INSERT INTO T1 VALUES(1,'AAA');
INSERT INTO T1 VALUES(2,'BBB');
INSERT INTO T1 VALUES(3,'CCC');
影响行数 1
已用时间: 0.845(毫秒). 执行号:409.
SQL> 影响行数 1
已用时间: 0.692(毫秒). 执行号:410.
SQL>
影响行数 1
已用时间: 0.613(毫秒). 执行号:411.
SQL>
SQL> COMMIT;
操作已执行
已用时间: 96.727(毫秒). 执行号:412.
SQL> select * from t1;
行号 ID NAME
---------- ----------- ----
1 1 AAA
2 2 BBB
3 3 CCC
已用时间: 0.772(毫秒). 执行号:414.
2.选择还原时间点。
SQL> select sysdate;
行号 SYSDATE
---------- -------------------
1 2024-12-04 10:46:29
已用时间: 0.313(毫秒). 执行号:415.
这个时间点,T1表里的数据还是存在的。
3.清空T1表数据。
SQL> truncate table t1;
操作已执行
已用时间: 116.786(毫秒). 执行号:416.
SQL> select * from t1;
未选定行
已用时间: 0.451(毫秒). 执行号:417.
此时T1表里的数据已被清空。
4.关闭数据库。
SQL> shutdown immediate;
操作已执行
已用时间: 0.400(毫秒). 执行号:0.
5.使用dmrman工具对数据库执行备份还原,还原时间点为“2024-12-04 10:46:29”,即数据清空前的时间点。
[dmdba@ky-dm8-jk134 bak]$ /dm8/bin/dmrman
dmrman V8
RMAN> restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/bak';
restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/bak';
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.452
RMAN> recover database '/dm8/data/DM01/dm.ini' with archivedir '/dm8/arch' until time '2024-12-04 10:46:29';
recover database '/dm8/data/DM01/dm.ini' with archivedir '/dm8/arch' until time '2024-12-04 10:46:29';
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[788380]
EP:0 total 2 pkgs applied, percent: 12%
EP:0 total 4 pkgs applied, percent: 25%
EP:0 total 6 pkgs applied, percent: 37%
EP:0 total 8 pkgs applied, percent: 50%
EP:0 total 10 pkgs applied, percent: 62%
EP:0 total 12 pkgs applied, percent: 75%
recover successfully!
time used: 334.324(ms)
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
recover database '/dm8/data/DM01/dm.ini' update db_magic;
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[788433]
recover successfully!
time used: 00:00:01.007
restore database ‘/dm8/data/DM01/dm.ini’ from backupset ‘/dm8/bak’;
recover database ‘/dm8/data/DM01/dm.ini’ with archivedir ‘/dm8/arch’ until time ‘2024-12-04 10:46:29’;
recover database ‘/dm8/data/DM01/dm.ini’ update db_magic;
数据库时间点备份还原必须按此三步骤执行。
6、重新启动数据库。
[root@ky-dm8-jk134 ~]# systemctl start DmServiceDMSVR01.service
7.登陆数据库,检查T1表是否恢复。
SQL> select * from t1;
行号 ID NAME
---------- ----------- ----
1 1 AAA
2 2 BBB
3 3 CCC
已用时间: 2.268(毫秒). 执行号:400.
SQL> select sysdate;
行号 SYSDATE
---------- -------------------
1 2024-12-04 11:11:29
已用时间: 0.702(毫秒). 执行号:401.
此时T1表数据已经恢复,测试到此完成。
四、总结。
1.数据库按时间点还原备份,必须使用在线实时备份,不能使用脱机备份。
2.在线实时备份,必须开启归档模式。
3.开启归档模式,需要将数据库切入mount状态下修改;也可直接修改dm.ini中的ARCH_INI参数为1,然后在dmarch.ini中添加归档参数后重启数据库。
文章
阅读量
获赞