ERROR: incremental backups cannot be taken unless WAL summarization is enabled
·
[postgres@linux010 pg_backup]$ pg_basebackup -D /data/pg_backup/inc_backup -i /data/pg_backup/backup_manifest -Ft -z -P
pg_basebackup: error: could not initiate base backup: ERROR: incremental backups cannot be taken unless WAL summarization is enabled
pg_basebackup: removing data directory "/data/pg_backup/inc_backup"
[postgres@linux010 pg_backup]$
解决pg_basebackup增量备份错误的方法
启用 WAL 摘要功能
执行以下命令启用 WAL 摘要进程:
ALTER SYSTEM SET summarize_wal = on;
SELECT pg_reload_conf();
注意:需确保 wal_level 设置为 replica 或 logical,minimal 级别不支持此功能。
验证设置状态
检查摘要进程是否已激活:
SHOW summarize_wal;
创建新的完整备份
启用摘要功能后需重新生成基准备份:
[postgres@linux010 pg_backup]$ pg_basebackup -D /data/pg_backup/ -Ft -z -P
31587/31587 kB (100%), 2/2 tablespaces
[postgres@linux010 pg_backup]$ ll
total 4284
-rw------- 1 postgres postgres 1043456 Jan 21 17:23 16441.tar.gz
-rw------- 1 postgres postgres 191073 Jan 21 17:23 backup_manifest
-rw------- 1 postgres postgres 3125743 Jan 21 17:23 base.tar.gz
-rw------- 1 postgres postgres 17096 Jan 21 17:23 pg_wal.tar.gz
[postgres@linux010 pg_backup]$
执行增量备份
利用完整备份的清单文件进行增量备份:
[postgres@linux010 pg_backup]$ pg_basebackup -D /data/pg_backup/inc_backup -i /data/pg_backup/backup_manifest -Ft -z -P
4929/31574 kB (15%), 2/2 tablespaces
[postgres@linux010 pg_backup]$ cd inc_backup/
[postgres@linux010 inc_backup]$ ls -ltrh
total 288K
-rw------- 1 postgres postgres 11K Jan 21 17:24 16441.tar.gz
-rw------- 1 postgres postgres 58K Jan 21 17:24 base.tar.gz
-rw------- 1 postgres postgres 195K Jan 21 17:24 backup_manifest
-rw------- 1 postgres postgres 17K Jan 21 17:24 pg_wal.tar.gz
[postgres@linux010 inc_backup]$
原理说明
summarize_wal 进程会在 pg_wal/summaries 中生成二进制摘要文件,记录数据块变更信息。增量备份依赖这些文件快速定位差异数据,未启用时无法识别变更区块。
更多推荐
所有评论(0)