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