达梦数据库备份还原实战案例
一、全库备份+增量备份集还原数据库
1.1还原原理
增量还原指通过增量备份集进行数据还原操作。在使用增量备份集进行数据库还原的前提是已对数据库进行全库备份。因为增量还原过程中隐含一个完全还原操作。选择增量备份还原时,直接选择最后一个增量备份集进行还原即可,数据库会自动从最早一个全库备份寻找开始还原。如果增量备份集的基备份集被删除了,那么单独使用这个增量备份集是无法进行还原操作的。
1.2还原准备工作
创建一个表,并且插入数据:
create table test(id int);
insert into test values(1);
commit;
1.3数据库进行一次全备
backup database full backupset \
'/home/dmdba/testbak/DB_BACKUP_FULL_02_26' compressed level 1;
1.4插入数据并进行增量备份
insert into test values(2);
commit;
backup database increment backupset '/home/dmdba/testbak/DB_BACKUP_INCRE_02_25';
1.5、继续插入数据进行增量备份
insert into test values(3);
commit;
1.6、模拟表数据删除
(也可以直接删除表)
truncate table test;
1.7、停止数据库服务开始还原
systemctl stop DmServiceDMSERVER.service
[dmdba@localhost bin]$ ./dmrman
检查备份集
RMAN> check backupset '/home/dmdba/testbak/DB_BACKUP_INCRE_02_26_2';
还原数据库
RMAN> RESTORE DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
FROM BACKUPSET '/home/dmdba/testbak/DB_BACKUP_INCRE_02_26_2';
恢复数据库
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
FROM BACKUPSET '/home/dmdba/testbak/DB_BACKUP_INCRE_02_26_2';
更新数据库
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
1.7、启动数据库检查数据
systemctl start DmServiceDMSERVER.service
select * from test;
二、全量+增量+归档日志还原数据库
归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。
2.1、准备工作
创建测试表,插入数据。
SQL> create table test2(id int);
SQL> insert into test2 values(1);
SQL> commit;
2.2、对数据库进行一次全备份
backup database full backupset \
'/home/dmdba/testbak/DB_BACKUP_FULL_2025_02_26' compressed level 1;
2.3、插入数据并进行第一次增量备份
SQL> insert into test2 values(2);
SQL> backup database increment backupset \
'/home/dmdba/testbak/DB_BACKUP_INCRE_2025_02_26_01';
2.4、继续插入数据,并进行第二次增量备份
SQL> insert into test2 values(3);
SQL> backup database increment backupset \
'/home/dmdba/testbak/DB_BACKUP_INCRE_2025_02_26_02';
2.5、插入数据提交
SQL> insert into test2 values(4);
SQL> commit;
2.6、在插入一条数据提交
SQL> insert into test2 values(5);
SQL> commit;
2.7、查看插入的数据
SQL> select * from test2;
行号 ID
---------- -----------
1 1
2 2
3 3
4 4
5 5
2.8、删除数据停止数据库
SQL> delete from test2;
commit;
systemctl stop DmServiceDMSERVER.service
2.9、开始还原数据库
RESTORE DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
FROM BACKUPSET '/home/dmdba/testbak/DB_BACKUP_INCRE_2025_02_26_02';
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/home/dmdba/dmdbms/arch';
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
2.10、启动数据库检查数据
systemctl start DmServiceDMSERVER.service
SQL> select * from test2;
行号 ID
---------- -----------
1 1
2 2
3 3
4 4
5 5
三、恢复到指定地点
删除数据
SQL> truncate table test2;
停止数据库服务
systemctl stop DmServiceDMSERVER.service
开始恢复
RESTORE DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
FROM BACKUPSET '/home/dmdba/testbak/DB_BACKUP_INCRE_2025_02_26_02';
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
WITH ARCHIVEDIR '/home/dmdba/dmdbms/arch' UNTIL TIME '2025-02-26 14:38:00 ';
RECOVER DATABASE '/home/dmdba/dmdbms/data/DAMENG/dm.ini' \
UPDATE DB_MAGIC;
查看数据
SQL> select * from test2;
服务器[LOCALHOST:5236]:处于普通打开状态
已连接
行号 ID
---------- -----------
1 1
2 2
3 3
浙公网安备 33010602011771号