重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 268|回复: 0
打印 上一主题 下一主题

pg_basebackup 的 -X, --wal-method=none|fetch|stream 含义

[复制链接]
跳转到指定楼层
楼主
发表于 2025-9-5 15:58:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 郑全 于 2025-9-5 16:00 编辑

在 PostgreSQL 数据库中,pg_basebackup 命令用于创建数据库集群的基础备份,-X, --wal-method=none|fetch|stream 是 pg_basebackup 命令的一个选项,用于指定备份期间处理 WAL(Write-Ahead Logging,预写式日志)的方式,各取值含义如下:
none
  • 含义:表示在执行 pg_basebackup 创建基础备份时,不会 对 WAL 日志进行额外处理。使用该选项时,pg_basebackup 仅仅获取数据库的数据文件,生成基础备份。
  • 使用场景与风险:这种方式适用于后续不需要基于备份进行时间点恢复(Point-In-Time Recovery,PITR) 的情况。但如果数据库出现故障,仅靠这种基础备份,只能将数据库恢复到备份完成的那一刻的状态,备份之后发生的所有事务都会丢失,无法恢复到故障发生前的任意时间点。所以,一般生产环境中很少单独使用该选项,除非对数据恢复要求不高,允许丢失备份后的数据。

fetch
  • 含义:当指定 wal-method=fetch 时,pg_basebackup 在创建基础备份的过程中,会在备份操作结束时,从数据库的 WAL 发送器(WAL sender)获取自备份开始以来生成的所有 WAL 段文件 。这意味着备份不仅包含了数据文件,还包含了备份期间产生的 WAL 日志,从而为后续的时间点恢复提供了必要条件。
  • 使用场景:常用于需要定期创建基础备份,并且希望在出现故障时能够利用备份和 WAL 日志将数据库恢复到故障发生前任意时间点状态的场景,比如对数据完整性和可恢复性要求较高的生产数据库。在进行恢复操作时,管理员可以结合基础备份以及获取到的 WAL 日志,通过重放 WAL 日志来实现精确的时间点恢复。

stream
  • 含义:选择 wal-method=stream ,pg_basebackup 会在备份过程中持续地 接收来自 WAL 发送器的 WAL 数据,而不是像 fetch 那样在备份结束时一次性获取。在备份期间,备份工具会一边创建数据文件的备份,一边接收并记录 WAL 日志流,这保证了备份是一个 持续一致 的状态,并且可以实时地获取到最新的 WAL 日志信息。
  • 使用场景:适用于需要进行连续备份或者对数据一致性和及时性要求极高的场景,比如构建热备数据库(hot standby) 。通过持续接收 WAL 日志流,备份节点可以近乎实时地应用 WAL 日志,从而与主数据库保持高度同步,实现低延迟的读写分离或故障切换等功能。与 fetch 相比,stream 方式在获取 WAL 日志方面更加实时和连续,能更好地保障备份数据与主数据库的一致性。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-18 03:01 , Processed in 0.259757 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表