VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

vb_probackup备份恢复实践

  • 示例均为在Linux系统下使用Vastbase G100 V2.2 Build 10进行的备份恢复操作。
  • 连接参数指定的数据库名称、端口等信息请以实际情况为准。
  • vb_probackup备份任务发生错误时,备份进程并不会完全退出,并且用vb_probackup show命令查看备份集状态时对应记录显示为ERROR,此时需要指定backup_id,手动删除状态为ERROR的备份集。

集中式备份管理

前置条件

1、开启追踪数据页变更的参数。

echo "enable_cbm_tracking = on" >> $PGDATA/postgresql.conf

2、重启数据库,使修改生效。

vb_ctl restart

3、使用vsql工具连接至数据库vastbase。

vsql -d vastbase -p 5432 -r

4、创建测试表并插入数据。

create table table_01(name text,id varchar(2));
insert into table_01 values('alice',1);
insert into table_01 values('jack',2);
insert into table_01 values('bob',3);

5、做一次wal日志切换,保证最新的wal日志归档到归档目录。

select pg_switch_xlog();

6、退出vsql程序。

\q

全量备份

1、初始化备份实例。

vb_probackup init -B /home/vastbase/bak

2、添加一个新的备份实例。

vb_probackup add-instance -B /home/vastbase/bak -D /home/vastbase/data/vastbase --instance vastbak

3、进行全量备份。全量备份的内容包含测试表table_01的三条数据。

vb_probackup backup -B /home/vastbase/bak --instance vastbak -b full

模拟数据丢失

1、删除table_01的其中一条数据。

vsql -d vastbase -p 5432 -r -c 'delete from table_01 where name = 'jack';'

增量备份

1、增量备份命令如下:

vb_probackup  backup -B /home/vastbase/bak --instance vastbak -d vastbase -b PTRACK

2、模拟第二次数据丢失。

vsql -d vastbase -p 5432 -r -c 'delete from table_01 where name = 'bob';'

查看备份信息

vb_probackup show -B /home/vastbase/bak

返回结果为:

BACKUP INSTANCE 'vastbak'
=====================================================================================================================================
 Instance  Version  ID      Recovery Time           Mode    WAL Mode  TLI  Time   Data   WAL  Zratio  Start LSN   Stop LSN    Status
=====================================================================================================================================
 vastbak   9.2      RTJUX3  2023-04-23 11:55:52+08  PTRACK  STREAM    1/1    5s  259MB  16MB    1.00  0/66000028  0/660001E8  OK
 vastbak   9.2      RTJUQ4  2023-04-23 11:51:43+08  FULL    STREAM    1/0   12s  783MB  16MB    1.00  0/64000028  0/640001E8  OK

第一次数据恢复

1、停止数据库进程。

vb_ctl stop

2、执行恢复操作,其中-i指定的备份id是PTRACK增量备份的id。数据库将在-D指定的数据目录处进行恢复。(该数据目录无需提前创建。)

vb_probackup restore -B /home/vastbase/bak --instance vastbak  -D /home/vastbase/data/backup1 -i RTJUX3

3、启动数据库。

vb_ctl start -D /home/vastbase/data/backup1

4、使用vsql工具连接至数据库vastbase并查看表table_01的内容。

vsql -d vastbase -p 5432 -r -c 'select * from table_01;'

返回结果如下,表示数据库已恢复至第二次丢失数据之前。

 name  | id
-------+----
 alice | 1
 bob   | 3
(2 rows)

第二次数据恢复

1、停止数据库进程。

vb_ctl stop /home/vastbase/data/backup1

2、执行恢复操作,其中-i指定的备份id是全量备份的id。数据库将在-D指定的数据目录处进行恢复。(该数据目录无需提前创建。)

vb_probackup restore -B /home/vastbase/bak --instance vastbak  -D /home/vastbase/data/backup2 -i RTJUQ4

3、启动数据库。

vb_ctl start -D /home/vastbase/data/backup2

4、使用vsql工具连接至数据库vastbase并查看表table_01的内容。

vsql -d vastbase -p 5432 -r -c 'select * from table_01;'

返回结果如下,表示数据库已恢复至第一次丢失数据之前。

 name  | id
-------+----
 alice | 1
 jack  | 2
 bob   | 3
(3 rows)

备份集合并

1、指定增量备份id,使其与父完全备份之间的所有增量备份均合并到父完全备份。

vb_probackup merge -B /home/vastbase/bak --instance vastbak  -i RTJUX3

2、合并成功后,再次查看备份信息:

vb_probackup show -B /home/vastbase/bak

返回结果如下,表示合并完成:

BACKUP INSTANCE 'vastbak'
======================================================================================================================================
 Instance  Version  ID      Recovery Time           Mode    WAL Mode  TLI  Time    Data   WAL  Zratio  Start LSN   Stop LSN    Status
======================================================================================================================================
 vastbak   9.2      RTJUX3  2023-04-23 11:55:52+08  FULL    STREAM    1/0    6s  1307MB  16MB    1.00  0/66000028  0/660001E8  OK

清理备份

删除当前的备份集语法如下:

vb_probackup delete -B /home/vastbase/bak --instance=vastbak -i RTJUX3

流备份

前置条件

1、开启追踪数据页变更的参数。

echo "enable_cbm_tracking = on" >> $PGDATA/postgresql.conf

2、重启数据库,使修改生效。

vb_ctl restart

3、使用vsql工具连接至数据库vastbase。

vsql -d vastbase -p 5432 -r

4、创建测试表并插入数据。

create table table_02(name text,id varchar(2));
insert into table_02 values('alice',1);
insert into table_02 values('jack',2);
insert into table_02 values('bob',3);

5、做一次wal日志切换,保证最新的wal日志归档到归档目录。

select pg_switch_xlog();

6、退出vsql程序。

\q

全量备份

1、初始化备份实例。

vb_probackup init -B /home/vb2210/bak

2、添加一个新的备份实例。

vb_probackup add-instance -B /home/vb2210/bak -D /home/vb2210/data/vastbase --instance vastbak

3、进行全量备份。全量备份的内容包含测试表table_02的三条数据。

vb_probackup backup -B /home/vb2210/bak --instance vastbak -b full -d vastbase -p 5432 --backup-to-stdout > full_1226553.bak 

模拟数据丢失

1、删除table_02的其中一条数据

vsql -d vastbase -p 5432 -r -c 'delete from table_02 where name = 'jack';'

增量备份

1、增量备份命令如下:

cat full_1226553.bak | vb_probackup backup -B /home/vb2210/bak --instance vastbak -d vastbase -b PTRACK --backup-to-stdout > incre_1226553.bak

2、模拟第二次数据丢失。

vsql -d vastbase -p 5432 -r -c 'delete from table_02 where name = 'bob';'

查看备份信息

vb_probackup show -B /home/vb2210/bak

返回结果为:

BACKUP INSTANCE 'vastbak'
=====================================================================================================================================
 Instance  Version  ID      Recovery Time           Mode    WAL Mode  TLI  Time   Data   WAL  Zratio  Start LSN   Stop LSN    Status
=====================================================================================================================================
 vastbak   9.2      SF9OGT  2024-06-13 11:55:52+08  PTRACK  STREAM    1/1    5s  259MB  16MB    1.00  0/66000028  0/660001E8  DONE
 vastbak   9.2      SF9OD1  2024-06-13 11:51:43+08  FULL    STREAM    1/0   12s  783MB  16MB    1.00  0/64000028  0/640001E8  DONE

第一次数据恢复

1、停止原数据库进程。

vb_ctl stop

2、执行恢复操作,恢复目标是增量备份操作之前。数据库将在-D指定的数据目录处进行恢复。(该数据目录无需提前创建。)

cat incre_1226553.bak full_1226553.bak | vb_probackup restore -B /home/vb2210/bak --instance vastbak  -D /home/vb2210/data/backup1 --restore-from-stdin

3、启动数据库。

vb_ctl start -D /home/vb2210/data/backup1

4、使用vsql工具连接至数据库vastbase并查看表table_02的内容。

vsql -d vastbase -p 5432 -r -c 'select * from table_02;'

返回结果如下,表示数据库已恢复至第二次丢失数据之前。

 name  | id
-------+----
 alice | 1
 bob   | 3
(2 rows)

第二次数据恢复

1、停止数据库进程。

vb_ctl stop /home/vb2210/data/backup1

2、再次执行恢复操作,恢复目标是全量备份之前。数据库将在-D指定的数据目录处进行恢复。(该数据目录无需提前创建。)

cat full_1226553.bak | vb_probackup restore -B /home/vb2210/bak --instance vastbak  -D /home/vb2210/data/backup2 --restore-from-stdin

3、启动数据库。

vb_ctl start -D /home/vb2210/data/backup2

4、使用vsql工具连接至数据库vastbase并查看表table_02的内容。

vsql -d vastbase -p 5432 -r -c 'select * from table_02;'

返回结果如下,表示数据库已恢复至第一次丢失数据之前。

 name  | id
-------+----
 alice | 1
 jack  | 2
 bob   | 3
(3 rows)

清理备份

删除当前的备份集语法如下:

vb_probackup delete -B /home/vb2210/bak --instance=vastbak -i SF9OGT 
vb_probackup delete -B /home/vb2210/bak --instance=vastbak -i SF9OD1