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

SUNDB使用热备恢复控制文件和数据文件

原创 科蓝SUNDB编辑部 2023-10-11
46

使用已备份的控制文件和数据文件完成恢复即可,已提交的数据不会丢失。
Step 1:备份前加载测试表及数据

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

Step 2:执行在线备份,期间插入一条数据

gSQL> ALTER DATABASE BEGIN BACKUP;
gSQL> quit
[sunje@gs01 ~]$ cd $SUNDB_DATA/
[sunje@gs01 Sundb_data]$ cp db/* backup/
[sunje@gs01 Sundb_data]$ cp wal/* backup/
[sunje@gs01 Sundb_data]$ gs
gSQL> INSERT INTO HOT_TEST VALUES (2, sysdate, 'HOT BACKUP TEST');
gSQL> COMMIT;
gSQL> ALTER DATABASE END BACKUP;

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

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

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

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

Step 5:模拟服务异常终止,同时删除控制文件和数据文件

gSQL> shutdown abort
gSQL> quit
[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ rm -f wal/*.ctl
[sunje@gs01 Sundb_data]$ rm -f db/*.dbf

Step 6:将已备份完成的控制文件和数据文件拷贝至指定路径

[sunje@gs01 Sundb_data]$ pwd
/home/sunje/product/Sundb_data
[sunje@gs01 Sundb_data]$ cp backup/*.ctl wal/
[sunje@gs01 Sundb_data]$ cp backup/*.dbf db/

Step 7:启动及恢复实例

[sunje@gs01 Sundb_data]$ gs

gSQL> startup mount

Startup success

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 180840)
Database altered.

gSQL> ALTER DATABASE RECOVER AUTOMATICALLY;

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

gSQL> select FILE_NAME,GROUP_STATE from v$logfile where GROUP_STATE='CURRENT';

FILE_NAME                                            GROUP_STATE
---------------------------------------------------- -----------
/home/sunje/product/Sundb_data/wal/redo_2_0.log CURRENT    

1 row selected.

gSQL> ALTER DATABASE RECOVER '/home/sunje/product/Sundb_data/wal/redo_2_0.log';

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

gSQL> ALTER DATABASE END INCOMPLETE RECOVERY;

Database altered.

gSQL> ALTER SYSTEM OPEN DATABASE RESETLOGS;

System altered.

Step 8:查看数据

gSQL> SELECT * FROM HOT_TEST;

C1 C2         C3             
-- ---------- ---------------
 1 2020-01-31 HOT BACKUP TEST
 2 2020-01-31 HOT BACKUP TEST
 3 2020-01-31 HOT BACKUP TEST

3 rows selected.

已提交数据为3条,当前表中有3条数据与预期一致,恢复完成。

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

评论