备份 PostgreSQL 的归档日志(WAL 日志)
·
是的,这条命令会备份 PostgreSQL 的归档日志(WAL 日志),这是 pgBackRest 备份流程的一部分,尤其是在 --type=full 的备份中,归档日志的处理与备份密切相关。以下是详细分析:
✅ 从命令角度分析是否包含归档日志:
pgbackrest backup \
--type=full \
--pg1-socket-path=/tmp \
--log-level-console=info \
--archive-timeout=1800 \
--no-expire-auto \
--start-fast \
--compress-type=gz \
--compress-level=6 \
--process-max=2
关键参数说明:
--type=full:进行一次完整备份,包括数据文件。--start-fast:允许备份在数据一致性点(checkpoint)前启动归档,从而更快开始备份。--archive-timeout=1800:等待最多 1800 秒(30 分钟)以获取所需的 WAL 日志,说明 pgBackRest 会等待 PostgreSQL 归档 WAL 日志以保证备份一致性。PGBACKREST_REPO1_PATH=/backrestrepo/postgres-ba14456d-backups:目标仓库也会保存归档日志(见下文)。
✅ pgBackRest 的备份机制说明:
在执行 pgbackrest backup 时,pgBackRest 的标准行为包括:
-
数据文件备份(base backup)
-
WAL 日志归档
-
WAL 是数据库一致性的保障;
-
pgBackRest 在
backup过程中会确保备份开始前后的 WAL 被归档到 repo 中; -
这些归档 WAL 会保存在:
/backrestrepo/postgres-ba14456d-backups/archive/db/...路径下。
-
✅ 如何确认归档日志是否被备份?
你可以在备份目录中查看是否有 archive 子目录,例如:
ls /backrestrepo/postgres-ba14456d-backups/archive/db/
如果你看到类似 9.6-1/0000000100000000000000XX.gz 的文件,那就是 WAL 归档文件,说明确实被备份了。
🟡 但注意:
pgBackRest 不会「强行备份所有归档日志」,它只会:
-
备份与本次
backup一致性相关的 WAL; -
如果你希望持续归档所有 WAL,需要配合 PostgreSQL 配置:
archive_mode = on archive_command = 'pgbackrest --stanza=db archive-push %p'这样所有 WAL 日志都会通过 pgBackRest 自动归档。
✅ 小结
是的,这个 pgbackrest backup 命令会备份数据库归档日志(WAL),以保证备份的一致性。这是 pgBackRest 的标准行为,且受参数如 --archive-timeout 和 --start-fast 控制。如果你希望持续归档所有 WAL,还应配置 PostgreSQL 的 archive_command。
如需我帮你生成验证脚本或解析备份结构目录,也可以继续提供支持。
更多推荐


所有评论(0)