首页 > 数据库 > 国内数据库 > QianBase TP如何进行物理备份
QianBase TP使用qbbackrest进行物理备份恢复,支持全量,增量和差异备份。
cp /usr/local/QianBaseTP/bin/qbbackrest /usr/local/bin
[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路径
编辑文件$QBHOME/data/qianbasetp.conf
调整下面两个参数
archive_mode = on
archive_command = 'qbbackrest --stanza=demo archive-push %p'
qctl -D ${QBHOME}/data -l ${QBHOME}/logfile restart
qbbackrest --stanza=demo stanza-create --qb1-user=qianbase --qb1-port=20158
--qb1-user=<数据库超级用户> --qb1-port=<数据库端口号>
qbbackrest --stanza=demo check --qb1-user=qianbase --qb1-port=20158
使用backup命令备份
复制所有的数据库文件
不依赖以前的备份 qbbackrest --stanza=demo --type=full backup
只复制上次备份后变化的数据库文件
依赖其他备份来进行恢复 qbbackrest --stanza=demo --type=incr backup
只复制上次全量备份后变化的数据库文件
类似于增量备份,但依赖的是最后一次全量备份 qbbackrest --stanza=demo --type=diff backup
使用--start-fast=y 设置强制检查点快速启动备份,将true传递给pg_start_backup(),立即启动备份,不等待数据库自己去触发下一个检查点。
wal选项
--archive-copy 拷贝WAL到备份集
--archive-check 归档WAL检查
--archive-mode-check 对数据库实例的archive_mode的检查
--archive-timeout 单个WAL文件传输的超时时间,以秒为单位
使用restore命令进行恢复
默认情况下,restore命令将恢复最新备份并应用在存储库中找到的所有存档 WAL 文件。
可以使用 --type 指定恢复类型,可选值如下:
default - 恢复到最后.
immediate - 恢复到最后一个一致性点.
lsn - 恢复到某一个lsn号.
name - 恢复到指定还原点.
xid - 恢复到指定事务id.
time - 恢复到指定时间戳.
preserve - 保留现有的恢复设置.
当 --type为 lsn, name, transaction ID (xid), 或 time, 还需要参数 --target 指定还原点.
--delta参数允许保留现有的数据库文件并仅根据需要进行恢复。否则需要停止数据库并从数据目录和表空间中删除所有文件。
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');
qbbackrest --stanza=demo --type=full backup --qb1-user=qianbase --qb1-port=20158
qbbackrest --stanza=demo info

Drop database backup_test;

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop
qbbackrest --stanza=demo --delta --type=immediate restore

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start
-----使用超户登录
qsql
select qb_wal_replay_resume();

qsql登陆数据库
\l
\c backup_test
\d
Select * from t1;
Select * from t2;
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');

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

Drop table t4;
qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop
qbbackrest --stanza=demo --delta --type=time --target="<时间>" restore
qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start
-----使用超户登录
qsql
select qb_wal_replay_resume();

qsql登陆数据库
\l
\c backup_test
\d
Select * from t1;
Select * from t2;

数据恢复到了t4表insert后,此时t5还未创建
qctl -D ${QBHOME}/data -l ${QBHOME}/logfile stop
qbbackrest --stanza=demo --delta --type=immediate restore

qctl -D ${QBHOME}/data -l ${QBHOME}/logfile start
-----使用超户登录
qsql
select qb_wal_replay_resume();

qsql登陆数据库
\l
\c backup_test
\d
Select * from t1;
Select * from t2;

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