我继承了一个运行 postgres 8.4 和 slony 1.2.21 的 5 节点 postgres 集群。我们正在将应用程序迁移到所有新代码,并且不想对集群进行很少的维护。昨天我们决定从集群中删除两个没有被使用的节点。我们对集群中的两个节点使用了 slonik 脚本DROP NODE
。这似乎工作正常,我们今天关闭了节点。然而,我今天早上注意到,我们的主数据库收集写入的位置没有将更改复制到其余服务器。我已经尝试了我能想到的一切,但似乎没有任何效果。
当我运行查询以收集状态时,我看到从昨天开始没有确认事件。st_last_received 根本没有改变。
st_origin | st_received | st_last_event | st_last_event_ts | st_last_received | st_last_received_ts | st_last_received_event_ts | st_lag_num_events | now
-----------+-------------+---------------+----------------------------+------------------+----------------------------+----------------------------+-------------------+-------------------------------
25 | 24 | 26196903 | 2016-11-29 17:39:06.859051 | 26187885 | 2016-11-29 12:51:45.396619 | 2016-11-28 11:11:48.909855 | 9018 | 2016-11-29 17:39:07.247598-05
25 | 27 | 26196903 | 2016-11-29 17:39:06.859051 | 26187885 | 2016-11-28 11:11:49.203193 | 2016-11-28 11:11:48.909855 | 9018 | 2016-11-29 17:39:07.247598-05
25 | 26 | 26196903 | 2016-11-29 17:39:06.859051 | 26187885 | 2016-11-28 11:11:50.253235 | 2016-11-28 11:11:48.909855 | 9018 | 2016-11-29 17:39:07.247598-05
我首先在所有节点上重新启动了 slony 守护程序,然后多次执行此操作。我已将调试日志设置为 4 级,并且对它们进行了梳理,但没有发现任何问题。
我查看了所有.sl_表,寻找任何可能告诉我它为什么不起作用的东西。
对于重要的复制集,我们的配置如下。
select * from _ads.sl_set;
set_id | set_origin | set_locked | set_comment
--------+------------+------------+-----------------
1 | 25 | | mgt tables
select * from _ads.sl_subscribe ;
sub_set | sub_provider | sub_receiver | sub_forward | sub_active
---------+--------------+--------------+-------------+------------
1 | 25 | 26 | t | t
1 | 25 | 27 | t | t
2 | 25 | 27 | t | t
1 | 25 | 24 | t | t
select * from _ads.sl_listen ;
li_origin | li_provider | li_receiver
-----------+-------------+-------------
24 | 24 | 25
26 | 26 | 25
27 | 27 | 25
27 | 25 | 26
26 | 25 | 27
27 | 25 | 24
24 | 25 | 27
24 | 25 | 26
26 | 25 | 24
26 | 24 | 25
27 | 26 | 25
26 | 27 | 25
24 | 26 | 25
27 | 24 | 25
24 | 27 | 25
25 | 25 | 24
25 | 25 | 26
25 | 25 | 27
任何建议、帮助或关于在哪里寻找的想法将不胜感激。我现在完全处于恐慌模式。