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

 

posted @ 2021-08-30 14:58  littlevigra  阅读(2026)  评论(0编辑  收藏  举报