Postgres CDC故障致WAL占满磁盘?只读副本场景是否有差异?
CDC工具故障+
max_slot_wal_keep_size=-1场景的影响分析 1. 是否会导致WAL占满磁盘引发生产数据库彻底故障?
会。
当CDC工具故障无法消费增量WAL时,对应的Postgres复制槽会处于活跃但停滞的状态。由于max_slot_wal_keep_size=-1配置意味着Postgres不会自动清理该复制槽需要的WAL段,只要数据库持续有写入操作(数据表增长必然伴随DML操作),WAL文件会无限制累积,最终耗尽磁盘空间。此时Postgres无法生成新的WAL文件,会直接停止所有读写服务,引发生产数据库彻底故障。
2. 结论是否与工具指向只读副本有关?
有关,分两种情况:
- 工具指向主库的复制槽:主库的WAL会持续累积,最终占满主库磁盘,导致整个集群(包括所有只读副本)彻底故障——因为副本依赖主库同步WAL,主库故障后副本也无法正常提供服务。
- 工具指向只读副本的复制槽:只有该副本的WAL会持续累积,最终占满副本磁盘导致副本故障,但主库的WAL清理不受影响,核心生产业务(依赖主库)仍能正常运行,不会引发全局故障。
内容的提问来源于stack exchange,提问作者just-some-questions
相关产品推荐
相关产品推荐

