ITPub博客

首页 > 数据库 > 国内数据库 > QianBase TP如何进行物理备份

QianBase TP如何进行物理备份

原创 国内数据库 作者:易鲸捷数据库 时间:2023-05-04 18:10:17 0 删除 编辑

1qbbackrest介绍

QianBase TP使用qbbackrest进行物理备份恢复,支持全量,增量和差异备份。

2配置qbbackrest

1)拷贝文件到/usr/local/bin目录

cp /usr/local/QianBaseTP/bin/qbbackrest /usr/local/bin

2)编辑文件/etc/qbbackrest.conf 没有则创建

[global]   

repo1-path=/home/qianbase/backup/    --指定备份存储路径

log-level-console=info  --日志级别

log-level-file=debug  --日志级别

repo1-retention-full=2    --全量备份保留次数

repo1-retention-diff=2    --差异备份和增量备份保留次数


[demo]

qb1-path=/usr/local/QianBaseTP/data   --指定数据库的data路径

3)配置归档

编辑文件$QBHOME/data/qianbasetp.conf

调整下面两个参数

archive_mode = on

archive_command = 'qbbackrest --stanza=demo archive-push %p'

4)重启数据库

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile restart

5)初始化 qbbackrest repository

qbbackrest --stanza=demo stanza-create --qb1-user=qianbase --qb1-port=20158

--qb1-user=<数据库超级用户> --qb1-port=<数据库端口号>

6)检查配置和归档是否正确

qbbackrest --stanza=demo check --qb1-user=qianbase --qb1-port=20158

3参数说明

3.1备份

使用backup命令备份

1)全量备份 - full

复制所有的数据库文件

不依赖以前的备份 qbbackrest --stanza=demo --type=full backup

2)增量备份 - incr

只复制上次备份后变化的数据库文件

依赖其他备份来进行恢复 qbbackrest --stanza=demo --type=incr backup

3)差异备份 - diff

只复制上次全量备份后变化的数据库文件

类似于增量备份,但依赖的是最后一次全量备份 qbbackrest --stanza=demo --type=diff backup

4)备份参数

使用--start-fast=y 设置强制检查点快速启动备份,将true传递给pg_start_backup(),立即启动备份,不等待数据库自己去触发下一个检查点。

wal选项

--archive-copy  拷贝WAL到备份集

--archive-check  归档WAL检查

--archive-mode-check  对数据库实例的archive_mode的检查

--archive-timeout  单个WAL文件传输的超时时间,以秒为单位

3.2恢复

使用restore命令进行恢复

恢复参数

默认情况下,restore命令将恢复最新备份并应用在存储库中找到的所有存档 WAL 文件。

可以使用 --type 指定恢复类型,可选值如下:

default - 恢复到最后.

immediate - 恢复到最后一个一致性点.

lsn - 恢复到某一个lsn号.

name - 恢复到指定还原点.

xid - 恢复到指定事务id.

time - 恢复到指定时间戳.

preserve - 保留现有的恢复设置.

当 --type为 lsn, name, transaction ID (xid), 或 time, 还需要参数 --target 指定还原点.

--delta参数允许保留现有的数据库文件并仅根据需要进行恢复。否则需要停止数据库并从数据目录和表空间中删除所有文件。

4备份恢复示例

4.1全量备份

1)创建测试database、表和数据

Create database backup_test;

\c backup_test

Create table t1(a int,b varchar(10));

Create table t2(a int,b varchar(10));

Insert into t1 values(1,'qqq'),(2,'www'),(3,'eee'),(4,'rrr'),(5,'ttt');

Insert into t2 values(6,'aaa'),(7,'sss'),(8,'ddd'),(9,'fff'),(10,'ggg');

2)全量备份并校验备份集

qbbackrest --stanza=demo --type=full backup --qb1-user=qianbase --qb1-port=20158

qbbackrest --stanza=demo info

3)删除database

Drop database backup_test;

4)恢复数据

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop

qbbackrest --stanza=demo --delta --type=immediate restore

5)启动数据库,退出read-only状态

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start

-----使用超户登录

qsql

select qb_wal_replay_resume();

6)查看数据恢复情况

qsql登陆数据库

\l

\c backup_test

\d

Select * from t1;

Select * from t2;


4.2增量备份

1)创建测试表和数据,并记录时间点

Create table t3(a int,b varchar(10));

Create table t4(a int,b varchar(10));

Insert into t3 values(11,'qaz'),(12,'wsx'),(13,'edc'),(14,'rfv'),(15,'tgb');

Insert into t4 values(16,'yhn'),(17,'ujm'),(18,'poi'),(19,'lkj'),(20,'mnb');

select sysdate;

Create table t5(a int,b varchar(10));

Insert into t5 values(21,'adad'),(22,'eqey'),(23,'dfsh'),(24,'vzcz'),(25,'tert');

2)增量备份并校验备份集

qbbackrest --stanza=demo --type=incr backup --qb1-user=qianbase --qb1-port=20158

qbbackrest --stanza=demo info

3)删除新建的表t4

Drop table t4;


4.2.1指定时间点恢复

1)停止数据库,指定时间点进行恢复

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop

qbbackrest --stanza=demo --delta --type=time --target="<时间>" restore

 

2)启动数据库,退出read-only状态

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start

-----使用超户登录

qsql

select qb_wal_replay_resume();

3)查看数据恢复情况

qsql登陆数据库

\l

\c backup_test

\d

Select * from t1;

Select * from t2;

数据恢复到了t4表insert后,此时t5还未创建

4.2.2恢复到最后一个一致性点

1)停止数据库,恢复到最后一个一致性点

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop

qbbackrest --stanza=demo --delta --type=immediate  restore

 2)启动数据库,退出read-only状态

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start

-----使用超户登录

qsql

select qb_wal_replay_resume();

 3)查看数据恢复情况

qsql登陆数据库

\l

\c backup_test

\d

Select * from t1;

Select * from t2;

 

数据已全部恢复

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026636/viewspace-2949994/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
贵州易鲸捷信息技术有限公司成立于2015年,是一家拥有核心数据库技术的“专精特新”企业,是国内率先开展“银行核心交易系统”试点工作的数据库厂商,更是全球最早推出下一代融合型分布式数据库的公司。自主研发的QianBase产品可满足银行90%以上业务场景需求,推动了金融信创产业发展。

注册时间:2023-02-10

  • 博文量
    23
  • 访问量
    16751