增量备份
PostgreSQL增量备份:pg_basebackup、pg_receivewal、归档WAL与PITR
1. pg_basebackup
# 全量基础备份
pg_basebackup -h localhost -U replicator -D /backup/full -Fp -Xs -P -R
# 压缩备份
pg_basebackup -h localhost -U replicator -D /backup/full -Ft -z -P
# 选项:
# -Fp: plain格式(目录)
# -Ft: tar格式
# -Xs: 流式传输WAL
# -P: 显示进度
# -R: 创建standby.signal
# -z: gzip压缩
2. WAL 归档
# postgresql.conf
wal_level = replica
archive_mode = ON
archive_command = 'cp %p /archive/%f'
-- 查看归档状态
SELECT * FROM pg_stat_archiver;
3. pg_receivewal
# 持续接收WAL到本地
pg_receivewal -h localhost -U replicator -D /archive/wal --synchronous
# 压缩接收
pg_receivewal -h localhost -U replicator -D /archive/wal -Z 6
4. PITR 恢复
# 1. 恢复基础备份
cp -r /backup/full/* /var/lib/postgresql/data/
# 2. 配置恢复目标
cat >> /var/lib/postgresql/data/postgresql.auto.conf << EOF
restore_command = 'cp /archive/%f %p'
recovery_target_time = '2026-06-14 10:00:00'
recovery_target_action = 'promote'
EOF
# 3. 创建恢复标记
touch /var/lib/postgresql/data/recovery.signal
# 4. 启动PostgreSQL
systemctl start postgresql