三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

瀚高数据库使用hg_rman进行块恢复示例

瀚高数据库使用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 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备份

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;
← 返回列表