只是在这里发布此信息,可能会帮助其他人:

不久前,我出现停电时会遇到此错误,并试图重新启动SLON复制服务,因为复制并未真正将数据从主机转换为从属:

FATAL  localListenThread: "select "_MY_DATABASE_copy".cleanupNodelock(); insert into "_MY_DATABASE_copy".sl_nodelock values (    1, 0, "pg_catalog".pg_backend_pid()); " - ERROR:  duplicate key value violates unique constraint "sl_nodelock-pkey"
DEBUG2 slon_abort() from pid=xxxx
DEBUG1 slon: shutdown requested
有帮助吗?

解决方案 3

好的,这就是我解决的方法,但这不能保证它对所有人都有效:

  • 检查SLON过程。 ~# ps aux | grep slon
  • 然后杀死所有运行SLON REPLICATIN服务的过程,看起来像这样。

    ~# ps aux | grep slon
    root      8321     0.0  0.0   6528  1568 pts/2    S+   10:35   0:00 slon MY_SCHEMA dbname=MY_DATABASE user=postgres host=169.1.1.1 password=password
    

通常,它在后台运行两个过程,这是正常的,因此我们必须杀死这些过程。

~# kill -9 8321

然后再次运行SLON REPLICATIN SERVICE脚本。


其他提示

在我们的环境中,这是由Postgres在Slon Daemons之前倒下的(计划或计划外)引起的。通常,重新启动污染不能解决错误。解决方案是什么:

  1. 停止所有引用失败/重新启动节点的呼吸(如果可以的话,只需通过 slon_kill;更简单)。
  2. 进入 sl_nodelock主数据库服务器上的表,并用与失败/重新启动节点相对应的NL_NODEID删除所有行。
  3. 启动任何停止的镇。

我也遇到了这个错误,就我而言,应用了第三个修复程序。我们意外地在奴隶上运行了一个“ slon”过程。我们的解决方案是关闭该过程,然后在主上重新启动“ SLON”过程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top