前置知识: PostgreSQL

增量备份

1 minAdvanced2026/6/14

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