简介&思路
阿里云的RDS for PostgreSQL目前提供的备份为物理备份,备份粒度可以自己设置,最频繁的基础备份可以做到一天一次。有了这个备份和归档日志,我们可以做到基于任意时间点(实际上是事务提交或回滚点的粒度)的恢复。
归档文件规律:采用从1开始顺序记录的16进制
备份集起始归档:默认记录 第一份归档的序号。
postgre engine 创建后 第一份备份集和第一份归档便同时开始备份记录,可以恢复 任意备份集 开始时间后的任意时间点。(给够足量的归档便可,否则恢复至最后的归档文件)
简图:
为了使java层代码对备份恢复的可控性,我们采用docker技术。整体思路:使用centos基础镜像安装postgre服务。下载全集备份和归档备份,分别解压对应的postgre/wal 目录。挂载docker对应 postgre:/pgdata wal:/pgwal(pgwal为新建目录,commit到docker images中的) 通过修改对应配置文件pg_hba.conf 、postgresql.conf、 recovery.conf 来实现任意时间点恢复。
操作过程&&摸索实践
为了保证postgre服务的版本兼容性,最好使用阿里公有云使用的版本。版本下载请转官方:https://www.postgresql.org/ftp/source/ 具体安装过程参考:https://blog.csdn.net/qq_33854781/article/details/81782323
安装成功后会生成 pgdata 和postgresql 目录。我们主要操作pgdata。
pgdata目录结构:
.
|-- base
| |-- 1
| |-- 12998
| |-- 13003
| `-- 16398
|-- global
|-- pg_clog
|-- pg_dynshmem
|-- pg_log
|-- pg_logical
| |-- mappings
| `-- snapshots
|-- pg_multixact
| |-- members
|