文档用途
本文档旨在介绍使用瀚高数据库提供的hg_rman工具进行块恢复。
详细信息
1、配置归档
开启归档
alter system set archive_mode = 'on';
配置归档目录
alter system set archive_directory = '/opt/HighGo5.6.5-cluster/data/rman/rman_arch';
2、配置块跟踪参数
需要在配置文件postgresql.conf 中对如下配置项做出修改:
# - Block change tracking -
hg_db_block_change_tracking = on
hg_db_bct_file_buffers = 32MB # min 128kB
hg_db_bct_cache_size = 128MB # min 800kB
bctwriter_delay = 200ms # 10-10000ms between rounds
3、重启数据库生效
pg_ctl restart -m f
4、初始化备份工具
hg_rman init -d highgo -B /opt/HighGo5.6.5-cluster/data/rman/rman_back -A /opt/HighGo5.6.5-cluster/data/rman/rman_arch
5、创建模拟数据并使用hg_rman备份
create table tb2_block(id int,name varchar);
insert into tb2_block select generate_series(1,10),'qa';
hg_rman backup -d highgo -b full
insert into tb2_block select generate_series(11,20),'hg';
hg_rman backup -d highgo -b incremental
insert into tb2_block select generate_series(21,30),'lk';
hg_rman backup -d highgo -b archive
highgo=# select * from pg_relation_filepath('tb2_block');
6、 模拟破坏测试表物理文件
找到测试表的物理文件
highgo=# select * from pg_relation_filepath('tb2_block');
pg_relation_filepath
----------------------
base/13864/17227
(1 row)
vi 17227 编辑物理文件删除第一行
需要重启防止数据库读取缓存数据
7、状态检查
重启后此时查询测试表,会发现表已被破坏,无法获取表数据
select * from tb2_block;
8、进行块恢复
hg_rman blockrecover -d highgo --datafile 1663/13864/17227 --block 0
【block 0 指的是被破坏的块】
注:此处的1663指的是表空间OID,通过select oid,* from pg_tablespace;查看
恢复验证,数据已恢复完成
select * from tb2_block;