一、 背景:一主两从的patroni和三etcd搭建的pgsql高可用集群
二、表现:patronictl -c /etc/patroni/patroni.yml list 查看集群member数量与存活的patroni服务和etcd服务数量对不上,即三个节点服务都存活,但list查看却只剩下leader在集群里。
三、影响:虽然服务是存活的,但这样会导致数据只写到pg集群的leader中,这样会导致TL(生命周期)不一致和Lag in MB(内存滞后)产生。这样也不直接影响pg服务存活,但会导致如果此时主节点挂了,会无法切换从节点,patroni规定存在内存滞后的节点是无法担任leader的。此时就会导致服务失效。
四、解决:etcd重启可以解决list查看集群members数量与patroni存活数量不一致的问题,这是由于etcd节点的时间不一致导致的,重启etcd可以让其时间恢复同步.
–更详细的错误日志可以在pg的日志里查看,pg的日志路径一般在/etc/patroni/patroni.conf下定义