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

SUNDB数据库恢复之逻辑恢复

原创 科蓝SUNDB编辑部 2022-09-02
304

首先构建出测试环境,用户test_bak用户下共2张测试表T1和T2,分别插入3条测试数据并提交。以下两节分别模拟用户误删表中的记录和误删整张表的情况。

gSQL> create user test_bak identified by test_bak;
gSQL> grant all privileges to test_bak;
gSQL> commit;
gSQL> connect test_bak test_bak
gSQL> select username from user_users;

USERNAME
--------
TEST_BAK

1 row selected.
gSQL> CREATE TABLE t1 ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO t1 VALUES (1, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> INSERT INTO t1 VALUES (2, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> INSERT INTO t1 VALUES (3, sysdate, 'T1 LOGIC BACKUP TEST');
gSQL> COMMIT;
 
gSQL> CREATE TABLE t2 ( C1 INT, C2 DATE, C3 VARCHAR(50) );
gSQL> INSERT INTO t2 VALUES (4, sysdate, 'T2 LOGIC BACKUP TEST'); 
gSQL> INSERT INTO t2 VALUES (5, sysdate, 'T2 LOGIC BACKUP TEST'); 
gSQL> INSERT INTO t2 VALUES (6, sysdate, 'T2 LOGIC BACKUP TEST'); 
gSQL> COMMIT;

Step 1:备份用户元信息

[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ sh 01_Sundb_object.sh test_bak test_bak
[TABLE&INDEX] TEST_BAK.T1 success
[TABLE&INDEX] TEST_BAK.T2 success
[sunje@gs01 backup]$ ls
01_Sundb_object.sh  02_Sundb_data.sh  DDL_OBJECT_test_bak_20200210_111147

Step 2:备份表中数据

[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ sh 02_Sundb_data.sh test_bak test_bak
[sunje@gs01 backup]$ ls
01_Sundb_object.sh  02_Sundb_data.sh  DDL_OBJECT_test_bak_20200210_111147  gloader_20200210
[sunje@gs01 backup]$ cd gloader_20200210/sh/
[sunje@gs01 sh]$ sh export.sh 

 Copyright © 2010 SUNJESOFT Inc. All rights reserved.
 Release Venus.3.2.5 revision(28401)

 COMPLETED IN EXPORTING TABLE: TEST_BAK.T1, 3 RECORDS 

 Copyright © 2010 SUNJESOFT Inc. All rights reserved.
 Release Venus.3.2.5 revision(28401)

 COMPLETED IN EXPORTING TABLE: TEST_BAK.T2, 3 RECORDS

Step 3:模拟误删数据(表结构还存在)

删除数据前先查看T1和T2表中的数据,确认当前状态。
[sunje@gs01 backup]$ gs
gSQL> connect test_bak test_bak
gSQL> select * from t1;

C1 C2         C3                  
-- ---------- --------------------
 1 2020-02-03 T1 LOGIC BACKUP TEST
 2 2020-02-03 T1 LOGIC BACKUP TEST
 3 2020-02-03 T1 LOGIC BACKUP TEST

3 rows selected.

gSQL> select * from t2;

C1 C2         C3                  
-- ---------- --------------------
 4 2020-02-03 T2 LOGIC BACKUP TEST
 5 2020-02-03 T2 LOGIC BACKUP TEST
 6 2020-02-03 T2 LOGIC BACKUP TEST

3 rows selected.
对T1和T2表执行truncate操作并提交,模拟误删数据。
gSQL> truncate table t1;   

Table truncated.

gSQL> commit;

Commit complete.

gSQL> truncate table t2;

Table truncated.

gSQL> commit;

Commit complete.
再次查看两张表的内容,都已经变成空表状态。
gSQL> select * from t1;

no rows selected.

gSQL> select * from t2;

no rows selected.

Step 4:导入数据

目前只是数据丢失,表结构还存在,因此将备份的数据导入即可完成恢复,无需导入用户元信息(表结构)。
[sunje@gs01 backup]$ pwd
/home/sunje/backup
[sunje@gs01 backup]$ ls
01_Sundb_object.sh  02_Sundb_data.sh  DDL_OBJECT_test_bak_20200210_111147  gloader_20200210
[sunje@gs01 backup]$ cd gloader_20200210/sh/
[sunje@gs01 sh]$ sh import.sh 

 Copyright © 2010 SUNJESOFT Inc. All rights reserved.
 Release Venus.3.2.5 revision(28401)

 COMPLETED IN IMPORTING TABLE: TEST_BAK.T1, TOTAL 3 RECORDS, SUCCEEDED 3 RECORDS 

 Copyright © 2010 SUNJESOFT Inc. All rights reserved.
 Release Venus.3.2.5 revision(28401)

 COMPLETED IN IMPORTING TABLE: TEST_BAK.T2, TOTAL 3 RECORDS, SUCCEEDED 3 RECORDS

Step 5:验证数据

[sunje@gs01 sh]$ gs
gSQL> connect test_bak test_bak
gSQL> select * from t1;

C1 C2         C3                  
-- ---------- --------------------
 1 2020-02-03 T1 LOGIC BACKUP TEST
 2 2020-02-03 T1 LOGIC BACKUP TEST
 3 2020-02-03 T1 LOGIC BACKUP TEST

3 rows selected.

gSQL> select * from t2;

C1 C2         C3                  
-- ---------- --------------------
 4 2020-02-03 T2 LOGIC BACKUP TEST
 5 2020-02-03 T2 LOGIC BACKUP TEST
 6 2020-02-03 T2 LOGIC BACKUP TEST

3 rows selected.

T1及T2表丢失的数据已找回,每张表各3条数据,恢复完成。

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

评论