2016-05-18 30 views
1

私たちのPostgres BDRデータベースシステムは、ノード間でのデータの複製を停止しました。Postgres BDRレプリケーションが停止しました - レプリケーションスロットがアクティブでない

pg_xlog_location_diffを使用してチェックを行ったところ、レプリケーションスロットにバッファが増えていることがわかりました。

SELECT slot_name, database, active, pg_xlog_location_diff(pg_current_xlog_insert_location(), restart_lsn) AS retained_bytes 
FROM pg_replication_slots 
WHERE plugin = 'bdr'; 
       slot_name    | database | active | retained_bytes 
-----------------------------------------+--------------+--------+---------------- 
bdr_26702_6275336279642079463_1_20305__ | ourdatabase | f  |  32253352 

また、スロットがアクティブ= falseとマークされていることに気付きました。

SELECT * FROM pg_replication_slots; 
-[ RECORD 1 ]+---------------------------------------- 
slot_name | bdr_26702_6275336279642079463_1_20305__ 
plugin  | bdr 
slot_type | logical 
datoid  | 26702 
database  | ourdatabase 
active  | f 
xmin   | 
catalog_xmin | 8041 
restart_lsn | 0/5F0C6C8 

私はPostgresのログレベルを増加させたが、私は、ログに表示のみのメッセージは以下のとおりです。

LOCATION: LogicalIncreaseRestartDecodingForSlot, logical.c:886 
DEBUG: 00000: updated xmin: 1 restart: 0 
LOCATION: LogicalConfirmReceivedLocation, logical.c:958 
DEBUG: 00000: failed to increase restart lsn: proposed 0/7DCE6F8, after 0/7DCE6F8, current candidate 0/7DCE6F8, current after 0/7DCE6F8, flushed up to 0/7DCE6F8 

あなたは、私が複製スロットを再活性化させることができる方法のアイデアを持っているなら、私に知らせてください。複製を再開させることができます。

+0

影響を受けたノードを再起動しましたか? 'xlog'ファイルがたくさんある場合、すべてのxlogが処理されるまでウォル受信機プロセスは起動しません。 – charli

答えて

0

本当に大量のデータがある場合を除いて、レプリケーションを一から作成しない理由はありません。スレーブを停止し、マスタのスロットを削除し、スレーブのデータディレクトリを削除し、新しいスロットを作成します(スレーブの変更を避けるために同じ名前で)。pg_basebackupを実行します。

良いチュートリアルhereがあります。

関連する問題