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

SUNDB数据库恢复之控制文件和重做日志同时丢失

原创 科蓝SUNDB编辑部 2022-08-26
859

需将冷备的控制文件和重做日志文件拷贝到指定路径,数据文件同样应使用冷备文件,然后执行不完全恢复操作,CURRENT状态的重做日志文件丢失会导致部分数据丢失。
Step 1:冷备前加载测试表及数据

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

Step 2:做全库冷备,实例启动后插入一条数据

gSQL> shutdown immediate 
gSQL> quit
[sunje@gs01 ~]$ pwd
/home/sunje
[sunje@gs01 ~]$ cp -r $SUNDB_DATA/ COLD_BACKUP
[sunje@gs01 ~]$ gs
gSQL> startup
gSQL> INSERT INTO COLD_TEST VALUES (2, sysdate, 'COLD BACKUP TEST');
gSQL> COMMIT;

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

gSQL> ALTER SYSTEM SWITCH LOGFILE; 

–执行6次
Step 4:再向测试表中插入两条数据

gSQL> INSERT INTO COLD_TEST VALUES (3, sysdate, 'COLD BACKUP TEST');
gSQL> COMMIT;
gSQL> INSERT INTO COLD_TEST VALUES (4, sysdate, 'COLD BACKUP TEST');

Step 5:模拟服务异常终止,删除控制文件(controlfile)

gSQL> shutdown abort
gSQL> quit
[sunje@gs01 ~]$ cd $SUNDB_DATA
[sunje@gs01 Sundb_data]$ rm -f wal/*.ctl
[sunje@gs01 Sundb_data]$ rm -f wal/*.log

Step 6:拷贝冷备的控制文件及重做日志文件分别拷贝至对应路径下

[sunje@gs01 Sundb_data]$ cp /home/sunje/COLD_BACKUP/wal/*.ctl wal/
[sunje@gs01 Sundb_data]$ cp /home/sunje/COLD_BACKUP/wal/*.log wal/

Step 7:因redo全部丢失,数据文件同样需采用冷备文件

[sunje@gs01 Sundb_data]$ rm -f db/*.dbf
[sunje@gs01 Sundb_data]$ cp /home/sunje/COLD_BACKUP/db/*.dbf db/

Step 8:启动实例并执行恢复

[sunje@gs01 Sundb_data]$ gs
gSQL> STARTUP MOUNT
gSQL> ALTER DATABASE BEGIN INCOMPLETE RECOVERY;

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

gSQL> ALTER DATABASE RECOVER AUTOMATICALLY;

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

gSQL> ALTER DATABASE END INCOMPLETE RECOVERY;

Database altered.

gSQL> ALTER SYSTEM OPEN DATABASE RESETLOGS;

System altered.

Step 9:查看数据

gSQL> SELECT * FROM COLD_TEST;

C1 C2         C3              
-- ---------- ----------------
 1 2020-01-09 COLD BACKUP TEST
 2 2020-01-09 COLD BACKUP TEST

2 rows selected.

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

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

评论