postgresql- slony>致命错误:重复的钥匙值违反了唯一约束“ sl_nodelock -pkey”
-
02-10-2019 - |
题
只是在这里发布此信息,可能会帮助其他人:
不久前,我出现停电时会遇到此错误,并试图重新启动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之前倒下的(计划或计划外)引起的。通常,重新启动污染不能解决错误。解决方案是什么:
- 停止所有引用失败/重新启动节点的呼吸(如果可以的话,只需通过
slon_kill
;更简单)。 - 进入
sl_nodelock
主数据库服务器上的表,并用与失败/重新启动节点相对应的NL_NODEID删除所有行。 - 启动任何停止的镇。
我也遇到了这个错误,就我而言,应用了第三个修复程序。我们意外地在奴隶上运行了一个“ slon”过程。我们的解决方案是关闭该过程,然后在主上重新启动“ SLON”过程。
不隶属于 StackOverflow