vb_basebackup
背景信息
Vastbase部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。Vastbase提供了vb_basebackup工具做基础的物理备份。vb_basebackup的实现目标是对服务器数据库文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行vb_basebackup时,需要使用系统管理员账户。vb_basebackup当前仅支持热备份模式,不支持压缩格式备份。
- vb_basebackup仅支持全量备份,不支持增量。
- vb_basebackup当前仅支持热备份模式,不支持压缩格式备份。
- vb_basebackup在备份包含绝对路径的表空间时,不能在同一台机器上进行备份。对于同一台机器,绝对路径是唯一的,因此会产生冲突。可以在不同的机器上备份含绝对路径的表空间。
- 若打开增量检测点功能且打开双写, vb_basebackup也会备份双写文件
*前提条件
可以正常连接Vastbase数据库,pg_hba.conf中需要配置允许复制链接,需要配置max_wal_senders的数量, 至少有一个可用。
在进行还原时,需要保证各节点备份目录中存在备份文件,若备份文件丢失,则需要从其他节点进行拷贝。
语法
显示帮助信息
vb_basebackup -? | --help
显示版本号信息
vb_basebackup -V | --version
参数说明
vb_basebackup参数可以分为如下几类:
-D directory
备份文件输出的目录,必选项。
常用参数:
- -c,–checkpoint=fast|spread
设置检查点模式为fast或者spread(默认)
- -l,–label=LABEL
为备份设置标签
- -P,–progress
启用进展报告
- -v, –verbose
启用冗长模式
- -V, –version
打印版本后退出
- -?,–help
显示vb_basebackup命令行参数
- -F,–format=plain|tar
指定输出格式
- -z
将输出的tar格式文件进一步压缩为.gz格式
- -T,需备份的表空间路径=表空间备份输出路径
指定表空间目录映射
连接参数
- -h, –host=HOSTNAME
指定正在运行服务器的主机名或者Unix域套接字的路径。
- -p,–port=PORT
指定数据库服务器的端口号。
可以通过port参数修改默认端口号。- -U,–username=USERNAME
指定连接数据库的用户。
- -s, –status-interval=INTERVAL
发送到服务器的状态包的时间(以秒为单位)
- -w,–no-password
不出现输入密码提示。
- -W, –password
当使用-U参数连接本地数据库或者连接远端数据库时,可通过指定该选项出现输入密码提示。
示例
vb_basebackup -D /home/test/trunk/install/data/backup -h 127.0.0.1 -p 21233 -F plain
INFO: The starting position of the xlog copy of the full build is: 0/1B800000. The slot minimum LSN is: 0/1B800000.
从备份文件恢复数据
当数据库发生故障需要从备份文件进行恢复。因为vb_basebackup是对数据库按二进制进行备份,因此恢复时可以直接拷贝替换原有的文件,或者直接在备份的库上启动数据库。
- 若当前数据库实例正在运行,直接从备份文件启动数据库可能会存在端口冲突,这是需要修配置文件的port参数,或者在启动数据库时指定一下端口。
- 若当前备份文件为主备数据库,可能需要修改一下主备之间的复制连接。即配置文件中的postgre.conf中的replconninfo1,replconninfo2等
若要在原库的地方恢复数据库,参考步骤如下:
- 停止数据库服务器, 具体操作请参见<管理员指南>
- 将原数据库库和所有表空间复制到另外一个位置, 以备后面需要
- 清理原库中的所有或部分文件
- 使用数据库系统用户权限从备份中还原需要的数据库文件
- 若数据库中存在链接文件, 需要修改使其连接到正确的文件.
- 重启数据库服务器,并检查数据库内容,确保数据库已经恢复到所需的状态。
- 暂不支持备份文件增量恢复
- 恢复后需要检查数据库中的连接文件是否连接到正确的文件
PITR支持恢复到指定LSN
功能描述
支持Oracle的DBMS_UTILITY包使用,提供了各种实用子程序。
示例
1.数据库开启归档模式
修改配置文件postgresql.conf,并重启数据库
archive_mode = on
archive_command = 'cp %p /home/vastbase_lst/data/vastbase/arch/%f'
mkdri/home/vastbase_lst/data/vastbase/arch/
vb_ctl restart
2.进行备份
mkdir/home/vastbase_lst/data/vastbase/bak
mkdir /home/vastbase_lst/data/tbs_test1_bak
vb_basebackup -D /home/vastbase_lst/data/vastbase/bak -h 127.0.0.1 -p 6012 -Fplain -P -v -T/home/vastbase_lst/data/tbs_test1=/home/vastbase_lst/data/tbs_test1_bak
3.进入数据库,创建表空间跟表
create tablespace tbs_test1 location '/home/vastbase_lst/data/tbs_test1';
create table t_tbs_backup1(id int)TABLESPACE tbs_test1;
insert into t_tbs_backup1 values(1);
insert into t_tbs_backup1 values(2);
insert into t_tbs_backup1 values(3);
insert into t_tbs_backup1 values(4);
insert into t_tbs_backup1 values(5);
insert into t_tbs_backup1 values(6);
insert into t_tbs_backup1 values(7);
insert into t_tbs_backup1 values(8);
insert into t_tbs_backup1 values(9);
insert into t_tbs_backup1 values(10);
4.查看当前LSN号
select pg_current_xlog_location();
5.继续插入数据
insert into t_tbs_backup1 values(11);
insert into t_tbs_backup1 values(12);
insert into t_tbs_backup1 values(13);
insert into t_tbs_backup1 values(14);
insert into t_tbs_backup1 values(15);
insert into t_tbs_backup1 values(16);
insert into t_tbs_backup1 values(17);
insert into t_tbs_backup1 values(18);
insert into t_tbs_backup1 values(19);
insert into t_tbs_backup1 values(20);
6.进入到备份目录/home/vastbase_lst/data/vastbase/bak,创建recovery.conf文件并写入
restore_command = 'cp /home/vastbase_lst/data/vastbase/arch/%f %p'
recovery_target_lsn='$LSN'
(填写第4步查看到的LSN号)
7.关闭原库
vb_ctl stop
8.启动数据库,完成恢复
vb_ctl start -D /home/vastbase_lst/data/vastbase/bak
9.进入数据库,查询数据
select * from t_tbs_backup1;