重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
pg_basebackup 的 -X, --wal-method=none|fetch|stream 含义
[打印本页]
作者:
郑全
时间:
2025-9-5 15:58
标题:
pg_basebackup 的 -X, --wal-method=none|fetch|stream 含义
本帖最后由 郑全 于 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 日志方面更加实时和连续,能更好地保障备份数据与主数据库的一致性。
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2