postgresql 概念 - 逻辑复制 - 物理复制槽 sender
1. 防范失控的复制槽
复制槽(物理复制槽)提供了一种便捷的方法来防止备库与主备不同步,它也是实现逻辑复制的基本组件。
让wal不会被移除掉
2. 复制槽的工作原理:
主库PostgreSQL实例会一直保留预写日志(WAL)文件,直到所有备库所需的插槽都确认已接收到特定段为止。只有完成此操作后,主库实例才会移除相应的WAL文件。
3. 隐患:
有一个复制槽未被感知到与备库失联,因此我的数据库主库一直保留WAL文件。如果不进行干预,我的PostgreSQL实例可能会耗尽磁盘空间并完全崩溃。
PostgreSQL 13隐藏"杀手锏"特性 - 云+社区 - 腾讯云 (tencent.com)
DBMS 正常情况下是可以对 WAL 进行自动 remove/recycle,如果出现 WAL 清理不掉的情况,且参数无可疑之处,
多半是其他原因引起的,需要仔细分析原因,切忌“头痛医头脚痛医脚”。比如此例中是因为废弃的物理复制槽导致,其实废弃的逻辑复制槽亦可导致此问题。
检查sender == 应该有两个,同时检查从库得服务状态
[root@iZ2zeijrvu2s38mfzvzrc3Z ~]# ps aux|grep sender postgres 13381 4.3 1.5 13481144 775172 ? Ss Jan06 221:30 postgres: wal sender process repuser 119.143.122.14(58740) idle postgres 21268 0.8 0.0 13202092 4248 ? Ss 2021 1111:33 postgres: wal sender process repuser 10.0.37.12(48374) streaming 8E0F/FA334630 root 24934 0.0 0.0 112712 988 pts/0 S+ 23:48 0:00 grep --color=auto sender
用一个例子来演示会更加清晰