七叶笔记 » 数据库 » PostgreSQL物理备份恢复之 pg_rman的用法说明

PostgreSQL物理备份恢复之 pg_rman的用法说明

使用

开启归档

重启 PG

初始化

全量备份

实例 总结

在 基于时间点恢复时, 如果之前做过恢复,那么此时DB与之前的备份已经不在同一时间线上。恢复默认只沿着基础备份建立时时间线恢复而不会切换到新的时间线,如果不做处理,恢复结果将和前面的完整恢复一模一样,恢复不出新插入的数据, 所以建议在恢复之后,可以接着做一个全库的备份

恢复之后, 数据库可能处于 read-only状态,此时可以用超户执行select pg_wal_replay_resume(); 或者在启动数据库实例前在postgresql.conf中添加recovery_target_action=‘promote'

pg_rman init 之后会生产 pg_rman.ini文件, 此时可以编辑该文件并添加备份策略,

我们以一个例子来说明:总共保留两周的数据,即14天的数据,每周进行一次全备,每周一和周三的2:00做一次增量备份,每天进行一次归档备份,这样我们需要对pg_rman.init中做如下配置:

因为我们需要两个全备份,所以KEEP_DATA_GENERATIONS=2

两周的数据所以KEEP_DATA_DAYS=14,而可以把WAL日志多保留一天,所以KEEP_ARCLOG_DAYS=15

至少保留1000个WAL文件,每个WAL为16M,所以大约16G,占用空间不算大。

KEEP_SRVLOG_DAYS=180,通常程序日志不太,所以保留180天的日志,即3个月。

建议备份时添加参数 -C -Z

建议恢复时添加参数–hard-copy

如果没有指定这个参数,pg_rman实际上是把在归档目录中建一个软链接 指向恢复中要用到的WAL日志文件。如果指定了这个参数,则执行真的拷贝。

过程中遇到的问题

Linux 系统时间与 PG 中的时间不一致

解决方法:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。如有错误或未考虑完全的地方,望不吝赐教。

相关文章