2

長く続く問題があります。slony を使用して、データベースをマスターからスレーブに複製し、そのスレーブから他の 3 つのバックアップ サーバーに複製します。2 ~ 3 週間に 1 回、特定の 1 つのテーブル (データベースでは大きいが最大ではない) でのみ発生するキーの重複の問題があります。

Postgres 8.4 と slony 1 で一年前のように発生し始め、2.0.1 に切り替えました。その後、それを 2.0.4 にアップグレードし、slony を 2.1.3 に正常にアップグレードしました。これが現在のバージョンです。同じコンピューターで新しいレプリケーションを開始しましたが、今日まですべて順調に進んでいました。同じテーブルで同じ重複キーエラーが発生しました(もちろん、毎回異なるキーを使用)。

それをクリーンアップする解決策は、スレーブの無効なキーを削除するだけで (すべてのノードに広がります)、すべてが再び機能します。データは破損していません。しかし、問題の原因は未解決のままです。

Google では、この問題に関連するものは何も見つかりませんでした (どのテーブルでも切り捨てを使用せず、テーブルの構造を変更しませんでした)。

それについて何ができるか考えていますか?

4

2 に答える 2

1

UNIQUEこの問題がセットアップで発生したとき、マスター データベースのスキーマがスレーブのものよりも古く、この特定の列に対する制約がないことが判明しました。したがって、私のアドバイスは次のようになります。

  • マスターテーブルに実際に制約があることを確認しください

そうでない場合:

  • テーブルをきれいにする
  • 制約を追加する

そうしないと:

  • レプリケートされたテーブルの slony を除くすべてのクライアントから書き込み権限を取り消します。
于 2015-05-29T13:26:08.497 に答える