是的,这条命令会备份 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 的标准行为包括:

  1. 数据文件备份(base backup)

  2. 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

如需我帮你生成验证脚本或解析备份结构目录,也可以继续提供支持。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐