Postgres的wal和PITR时间点恢复
研究了Postgres的库数据恢复和转移,再来研究一下PITR按时间点恢复 类比到MySQL,因为我们是运维,不是专业的DBA,所以恢复到正确数据即可 那跟阿里云以及自建的MySQL恢复一样,首先都要有一个每天的基础备份,然后类比MySQL的Binlog,Postgres这里就相当于wal。 这么类比就对了,那么恢复过程的思路是一样的: 首先建立一个新的实例 第二步把每天的基础物理全备给恢复上去 第三步把之后的wal日志传到新实例,恢复到指定时间点 第四步最后把表或库Dump下来,灌入到旧实例的新表或新库 那我们一步一步来解释: 一、每天建立一个基础备份,这样在Base基础上,只需恢复当天的wal,速度够快 建立每天的Base基础物理备份 pg_basebackup -Ft -Pv -Xf -z -Z5 -U postgres -h localhost -p 5432 -D /pg_backup 解释一下: -Ft: 指定备份格式为 tar。 如果使用 tar 格式,备份会输出 tar 文件,并且不需要直接访问 PostgreSQL 数据目录。 -Pv: -P:显示备份进度。 -v:启用详情模式(verbose),显示更多日志。 -Xf: -X:控制 WAL 日志的处理方式,f 表示在备份中包含 WAL 文件(Write Ahead Logs),确保备份可以用于恢复到完整的一致状态。 -z: 启用压缩功能。 -Z5: 设置压缩级别为 5(压缩级别从 0 到 9,9 为最高压缩)。 -U postgres: 使用 postgres 用户来连接数据库。 -h localhost: 指定数据库主机为当前机器(localhost)。 -p 5432: 指定 PostgreSQL 监听端口为 5432(默认端口)。 -D /pg_backup: 将备份文件保存到指定路径 /pg_backup 中。 这样我们就在 /pg_backup 中有了备份文件,包括一个backup_manifest的文件清单,以及一个压缩包 ...