スタンバイインスタンスの昇格処理がタイムアウトで失敗する
Enterprise Postgresのよくあるご質問を検索できます。
Enterprise Postgres の技術情報はこちら
- ストリーミングレプリケーションのスタンバイインスタンスを昇格させた際、pg_ctl promoteコマンドがタイムアウトでエラー復帰しました。
原因と対処方法を教えてください。 - [原因]
スタンバイインスタンスにパラメータ restore_command が設定されており、restore_commandの実行に時間を要した可能性があります。
restore_commandが設定されている場合、スタンバイインスタンスが昇格要求を受信した際にrestore_commandが複数回実行され、昇格処理はそのrestore_commandの完了を待ちます。
このときrestore_commandにscpコマンドなどのネットワーク通信を伴うコピーコマンドが設定されている、かつ、接続先へのネットワークが不通であった場合、コピーコマンドの復帰待ちにより昇格処理に時間がかかる場合があります。
その結果、「pg_ctl: サーバは時間内に昇格しませんでした」というエラーメッセージが表示され、昇格処理がタイムアウトすることがあります。
[対処方法]
restore_commandにscpコマンドなどのネットワーク通信を伴うコピーコマンドを設定する場合、コピーコマンドにタイムアウト時間を設定し、pg_ctl promoteコマンドの待機時間内に処理が完了するようにしてください。
例えば、scpコマンドの場合は -o "ConnectTimeout <タイムアウト時間>" オプションが使用できます。
ネットワーク不通時、昇格要求の受信後は5回程度のrestore_command実行が動作する場合があるため、タイムアウト値についてはpg_ctl promoteのコマンドに指定する待機時間(デフォルト60秒)に対してある程度余裕を持った値を設定してください。
restore_commandパラメータの詳細は、以下のマニュアルを参照してください。
Fujitsu Enterprise Postgres 17 SP2
PostgreSQL 17.6 Documentation
Part III. Server Administration
Chapter 19. Server Configuration
19.5. Write Ahead Log
19.5.5. Archive Recovery
restore_command
なお記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
| 製品・サービス情報 |
|
||||
|---|---|---|---|---|---|
| アンサー種別 | 運用/保守 |
