3

これをここに投稿するだけで、他の人を助けるかもしれません:

しばらく前に停止したときにこのエラーが発生し、レプリケーションが実際にはMASTERからSLAVEにデータをレプリケートしていないため、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
4

3 に答える 3

2

これは、私たちの環境では、Postgresがslonデーモンの前にダウンする停止(計画的または計画外)によって引き起こされます。多くの場合、スロンを再起動してもエラーは解決しません。それを解決するものは次のとおりです。

  1. 失敗/再起動されたノードを参照するすべてのスロンを停止します(可能であれば、;を介してすべてのスロンを停止するだけslon_killです;はるかに簡単です)。
  2. マスターデータベースサーバーのテーブルに移動しsl_nodelock 、障害が発生した/再起動したノードに対応するnl_nodeidを持つすべての行を削除します。
  3. 停止したスロンを開始します。
于 2012-02-14T16:21:25.270 に答える
1

このエラーも発生しました。私の場合、3番目の修正が適用されました。誤って「slon」プロセスをスレーブになる予定で実行していました。私たちの解決策は、そのプロセスをシャットダウンしてから、マスターで「slon」プロセスを再起動することでした。

于 2012-10-26T11:30:54.120 に答える
1

これが私が修正する方法ですが、これはすべての人に機能することを保証するものではありません。

  • slonプロセスを確認してください。~# ps aux | grep slon
  • 次に、次のようなslonreplicatinサービスを実行しているすべてのプロセスを強制終了します。

    ~# 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
    

通常、バックグラウンドで2つのプロセスが実行されていますが、これは正常であるため、これらのプロセスを強制終了する必要があります。

~# kill -9 8321

次に、slonreplicatinサービススクリプトを再度実行します。


于 2010-09-15T01:45:07.110 に答える