hhdb10.4——增量备份

184 阅读2分钟

1 备份环境

数据库安装目录:/home/hh/hhdb 创建归档路径:mkdir -p /home/hh/hhdb/arch

2 备份

2.1 配置归档模式

vim /home/hh/hhdb/data/hhdbsql.conf  

#文件末尾添加

wal_level=replica

archive_mode=on

archive_command = 'test ! -f /home/hh/hhdb/arch/%f && cp %p /home/hh/hhdb/arch/%f'

2.2 启动数据库并登录

cd /home/hh/hhdb/bin

./start start_db_bg.sh

./runsql.sh #输入帐号和密码登录数据库

image.png

2.3 创建测试数据

create table lhx_test(id int,name varchar(20),time timestamp with time zone);

insert into lhx_test(id,name,time)values(1,'关羽',now());

image.png

2.4 创建备份点,并备份data目录

hhdb=# select hh_start_backup('basebak');

 hh_start_backup 

-----------------

 0/8000060

(1 行记录)



备份data目录

cd /home/hh/hhdb

tar czvf hhdata.tar.gz data

2.5 完成备份

hhdb=# select hh_stop_backup();

注意: hh_stop_backup 执行完成,所有需要的WAL段都已经归档完成。

hh_stop_backup

----------------

0/8000168

(1 行记录)

2.6 插入新记录,然后手动归档,切换日志,重复3次,间隔1分钟左右。

hhdb=# insert into lhx_test(id,name,time)values(2,'张飞',now());

INSERT 0 1

hhdb=# select hh_switch_wal();

hh_switch_wal

---------------

0/C000270

(1 行记录)

hhdb=# insert into lhx_test(id,name,time)values(3,'赵云',now());

INSERT 0 1

hhdb=# select hh_switch_wal();

hh_switch_wal

---------------

0/100000F0

(1 行记录)

hhdb=# insert into lhx_test(id,name,time)values(4,'黄忠',now());

INSERT 0 1

hhdb=# select hh_switch_wal();

hh_switch_wal

---------------

0/140000F0

(1 行记录)

3 恢复

3.1 停止数据库,删除data目录,并解压备份的data

[hh@localhost hhdb]$ cd bin

[hh@localhost bin]$ ./stop_db.sh

等待服务器进程关闭 .... 完成

服务器进程已经关闭

cd /home/hh/hhdb

mv data data1

tar xzvf hhdata.tar.gz

3.2 配置恢复文件,启动数据库

#在新的data目录下创建recovery.conf文件。可以从模版复制过来

cd /home/hh/hhdb/data

cp ../share/hhdbsql/recovery.conf.sample recovery.conf

vi recovery.conf

文件末尾添加

restore_command='cp /home/hh/hhdb/arch/%f "%p"'

#启动数据库

cd /home/hh/hhdb/bin

./start_db_bg.sh

3.3 查看数据情况

hhdb=# table lhx_test ;

 id | name |             time              

----+------+-------------------------------

  1 | 关羽 | 2021-11-30 10:19:23.926888+08

  2 | 张飞 | 2021-11-30 10:21:51.025001+08

  3 | 赵云 | 2021-11-30 10:22:21.806225+08

  4 | 黄忠 | 2021-11-30 10:23:19.350576+08

(4 行记录)

hhdb=# 

说明

通过查询可知,最开始备份数据只有一条数据,通过归档日志,可以在原有数据库恢复后续增加的数据, 同理将恢复文件修改一下,可以实现向后恢复任意时节节点。 在recovery.conf文件后面添加 recovery_target_time ='2021-11-30 10:21:00' 时间选择应该大于要归档文件的时间节点。