Ubuntu 10.04.2 LTS(プライマリおよびスタンバイ)でPostgreSQL9.1.3ストリーミングレプリケーションをセットアップしています。レプリケーションは、ストリームベースのバックアップ(pg_basebackup
)で初期化されます。スクリプトは、を使用restore_command
してリモートアーカイブの場所から必要なWALアーカイブをフェッチしようとしrsync
ます。
restore_commandスクリプトが終了コード<>255で失敗した場合、すべてがドキュメントに記載されているように機能します。
起動時に、スタンバイは、restore_commandを呼び出して、アーカイブの場所で使用可能なすべてのWALを復元することから始まります。そこで利用可能なWALの最後に到達し、restore_commandが失敗すると、pg_xlogディレクトリで利用可能なすべてのWALを復元しようとします。それが失敗し、ストリーミングレプリケーションが構成されている場合、スタンバイはプライマリサーバーに接続し、アーカイブまたはpg_xlogで見つかった最後の有効なレコードからWALのストリーミングを開始しようとします。それが失敗した場合、またはストリーミングレプリケーションが構成されていない場合、または接続が後で切断された場合、スタンバイは手順1に戻り、アーカイブからファイルを再度復元しようとします。アーカイブpg_xlogからの再試行のこのループは、サーバーが停止するか、トリガーファイルによってフェイルオーバーがトリガーされるまで続きます。
ただし、restore_commandスクリプトが終了コード255で失敗すると(失敗したrsync呼び出しからの終了コードがスクリプトによって返されるため)、サーバープロセスは次のエラーで終了します。
2012-05-09 23:21:30 CEST - @ LOG: database system was interrupted; last known up at 2012-05-09 23:21:25 CEST
2012-05-09 23:21:30 CEST - @ LOG: entering standby mode
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(601) [Receiver=3.0.7]
2012-05-09 23:21:30 CEST - @ FATAL: could not restore file "00000001000000000000003D" from archive: return code 65280
2012-05-09 23:21:30 CEST - @ LOG: startup process (PID 8184) exited with exit code 1
2012-05-09 23:21:30 CEST - @ LOG: aborting startup due to startup process failure
だから私の質問は今です:これはバグですか、それとも他の優れたドキュメントに欠けている終了コード255の特別な意味がありますか、それともここで何か他のものが欠けていますか?