PostgreSQL复制槽wal_status的reserved与extended区别及可靠性优先级
PostgreSQL 复制槽 wal_status:reserved 与 extended 的核心区别及可靠性对比
核心区别
- reserved:复制槽仅锁定当前正在同步的WAL日志段,确保这段WAL不会被PostgreSQL自动回收,但未对后续新生成的WAL段做保留。这种状态常见于复制进程(如walreceiver)临时断开、或还未开始请求后续WAL数据的场景。
- extended:复制槽不仅保留当前正在使用的WAL段,还提前锁定了后续即将生成的WAL段。当walreceiver持续在线并主动拉取后续WAL时,复制槽会进入该状态,确保所有未同步的WAL(包括新生成的)都不会被清理。
两者的核心差异在于WAL保留的范围:reserved只覆盖当前正在处理的WAL,extended则覆盖当前及未来待同步的WAL。
可靠性优先级
extended的可靠性保障优先级更高。
处于extended状态时,即便复制进程短时间中断,已经被提前锁定的后续WAL也不会被回收,待复制进程恢复后可继续同步,不会出现WAL缺失导致的复制中断。而reserved状态下,若复制断开时间较长,新生成的WAL可能被系统自动清理,等进程恢复时会因找不到所需WAL而触发复制失败,往往需要重新初始化复制链路。
内容的提问来源于stack exchange,提问作者sr7
相关产品推荐
相关产品推荐

