database - PostgreSQL - Slony > fatal error : duplicate key value violates unique constraint "sl_nodelock-pkey"

标签 database postgresql replication database-replication slony

只是在这里张贴,可能会对其他人有所帮助:

我在前一段时间发生中断时收到此错误,并尝试重新启动 slon 复制服务,因为复制并没有真正将数据从 MASTER 复制到 SLAVE:

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

最佳答案

在我们的环境中,这是由中断(计划内或计划外)造成的,其中 Postgres 在 slon 守护进程之前停机。通常,重新启动 slon 并不能解决错误。解决它的是:

  1. 停止所有引用失败/重启节点的slons(如果你 可以,只需通过 slon_kill 停止所有 slons;简单多了)。
  2. 进入sl_nodelock 主数据库服务器上的表,并删除所有行 nl_nodeid 对应于失败/重新启动的节点。
  3. 开始任何 停止 slons。

关于database - PostgreSQL - Slony > fatal error : duplicate key value violates unique constraint "sl_nodelock-pkey",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713927/

相关文章:

database - 为什么无法从处理程序访问我的数据库连接?

database - 验证存储过程参数以强制执行参照完整性约束

mysql - 使用mysql的数据集群

mysql - 在 Ruby on Rails (MySQL) 中使用 'end' 作为列名

postgresql - postgres `order by` 参数类型

PostgreSQL - 如何使用动态参数定义用户定义的函数?

sql - Entity Framework 模型创建

sql-server - SSRS 复制数据库的最佳方法是什么

postgresql - 如何获取 Golang 数据库连接池来管理集群中多台主机的连接?

复制与冗余