暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SUNDB使用增量备份恢复数据文件与重做日志文件

原创 科蓝SUNDB编辑部 2023-10-13
130

使用已备份完成的数据文件及重做日志文件进行恢复,CURRENT状态的日志文件中的数据会丢失。
Step 1:备份前加载测试表及数据

gSQL> CREATE TABLE INC_TEST ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO INC_TEST VALUES (1, sysdate, 'INCREMENTAL BACKUP TEST');
gSQL> COMMIT;

Step 2:执行增量备份

gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0;

Database altered.
gSQL> !ls /home/sunje/product/Sundb_data/backup
controlD20200203T155000L0S5.inc  databaseD20200203T154959L0S5.inc  README

Step 3:切换6次联机日志(redofile)产生归档文件,模拟生产环境(该步骤可选)

gSQL> ALTER SYSTEM SWITCH LOGFILE; 
--执行6次或多次

Step 4:再向测试表中插入2条数据

gSQL> INSERT INTO INC_TEST VALUES (2, sysdate, 'INCREMENTAL BACKUP TEST');
gSQL> COMMIT;
gSQL> INSERT INTO INC_TEST VALUES (3, sysdate, 'INCREMENTAL BACKUP TEST');

Step 5:模拟服务异常终止

gSQL> shutdown abort

Step 6:删除数据文件与重做日志文件

[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ rm -f db/*.dbf
[sunje@gs01 Sundb_data]$ rm -f wal/*.log

Step 7:恢复重做日志文件

[sunje@gs01 Sundb_data]$ cd archive_log/
[sunje@gs01 archive_log]$ pwd
/home/sunje/product/Sundb_data/archive_log
[sunje@gs01 archive_log]$ ls
archive_0.log  archive_1.log  archive_2.log  archive_3.log
[sunje@gs01 archive_log]$ gdump log archive_3.log |grep LOG_GROUP_ID
 LOG_GROUP_ID    : 3
[sunje@gs01 archive_log]$ gdump log archive_2.log |grep LOG_GROUP_ID
 LOG_GROUP_ID    : 2
[sunje@gs01 archive_log]$ gdump log archive_1.log |grep LOG_GROUP_ID
 LOG_GROUP_ID    : 1
[sunje@gs01 archive_log]$ gdump log archive_0.log |grep LOG_GROUP_ID
 LOG_GROUP_ID    : 0
[sunje@gs01 archive_log]$ cp archive_3.log /home/sunje/product/Sundb_data/wal/redo_3_0.log
[sunje@gs01 archive_log]$ cp archive_2.log /home/sunje/product/Sundb_data/wal/redo_2_0.log
[sunje@gs01 archive_log]$ cp archive_1.log /home/sunje/product/Sundb_data/wal/redo_1_0.log
[sunje@gs01 archive_log]$ cp archive_0.log /home/sunje/product/Sundb_data/wal/redo_0_0.log

Step 8:恢复并启动实例

[sunje@gs01 Sundb_data]$ gs
gSQL> startup mount

Startup success

gSQL> ALTER DATABASE RESTORE;

Database altered.

gSQL> ALTER DATABASE BEGIN INCOMPLETE RECOVERY;

ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_3.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180674)
Database altered.

gSQL> ALTER DATABASE RECOVER AUTOMATICALLY;

ERR-01000(14104): Warning: suggestion '/home/sunje/product/Sundb_data/archive_log/archive_4.log'
ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 180676)
Database altered.

gSQL> ALTER DATABASE END INCOMPLETE RECOVERY;

Database altered.

gSQL> ALTER SYSTEM OPEN DATABASE RESETLOGS;

System altered.

Step 9:查看INC_TEST表的数据

gSQL> SELECT * FROM INC_TEST;

C1 C2         C3                     
-- ---------- -----------------------
 1 2020-02-03 INCREMENTAL BACKUP TEST

1 row selected.

已提交数据为2条,当前表中有1条,已提交的数据缺失1条是由于重做日志全部丢失所致,测试结果与预期一致,恢复完成。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论