瀚高数据库使用hg_rman进行块恢复示例
文章目录
- 文档用途
- 详细信息
文档用途
本文档旨在介绍使用瀚高数据库提供的hg_rman工具进行块恢复。
详细信息
1、配置归档
开启归档
altersystemsetarchive_mode='on';配置归档目录
altersystemsetarchive_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 rounds3、重启数据库生效
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_arch5、创建模拟数据并使用hg_rman备份
createtabletb2_block(idint,namevarchar);insertintotb2_blockselectgenerate_series(1,10),'qa';hg_rmanbackup-d highgo-bfullinsertintotb2_blockselectgenerate_series(11,20),'hg';hg_rmanbackup-d highgo-b incrementalinsertintotb2_blockselectgenerate_series(21,30),'lk';hg_rmanbackup-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(1row)vi 17227 编辑物理文件删除第一行
需要重启防止数据库读取缓存数据
7、状态检查
重启后此时查询测试表,会发现表已被破坏,无法获取表数据
select*fromtb2_block;8、进行块恢复
hg_rman blockrecover -d highgo --datafile 1663/13864/17227 --block 0 【block 0 指的是被破坏的块】
注:此处的1663指的是表空间OID,通过select oid,* from pg_tablespace;查看
恢复验证,数据已恢复完成
select*fromtb2_block;