postgresql的备份方案大致分为两类
- 全量:基于pg_basebackup + rsync两个命令 + 定时器,实现月、周、日三个备份
- 增量:基于WAL日志实现增量数据备份
全量备份
冷备份冷恢复
热备冷恢复
热备热恢复
分类
-
物理备份
-
物理备份
-
逻辑备份
特点
-
备份和恢复时都需要停止数据库服务
-
备份不停服务、恢复需要停止服务
-
备份、恢复不停服务
实施
-
cp -r /usr/local/pgsql/data /usr/temp/
-
pg_basebackup + rsync
-
pg_dump + pg_restore
增量备份
预写式日志(WAL)
步骤
- pg_basebackup 备份基础文档
- 启用WAL,自动捕获16MB(可设置)的增量数据,形成wal文件,并归档
- 可以秒级恢复不同wal段的数据
barman
成熟的postgresql的备份系统
可以低成本搭建一个时间点式postgresql备份管理平台
使用方案 - 全量逻辑备份
我们表不多,而且库的绝大部分数据处于snapshot的blob字段、snapshot_history的blob字段,所以逻辑备份的数据库语句并不多,因此选择全量逻辑备份方案
- 每天凌晨两点,执行pg_dump命令,对整个库进行热备份,然后归档进minio
- 需要恢复时,从minio取出归档文档,然后执行pg_restore