Enterprise Postgresにおいて、フェイルオーバーによるデータベースの未起動について
Enterprise Postgresのよくあるご質問を検索できます。
Enterprise Postgres の技術情報はこちら
- PRIMECLUSTERにて、Enterprise Postgresのフェイルオーバーを繰り返したところ、Enterprise Postgresが起動しなくなりました。原因と対処方法を教えてください。
-
[原因]
Enterprise Postgresのフェイルオーバーが発生すると、待機系のEnterprise Postgresの昇格(または起動)時にクラッシュリカバリが実行されます。
フェイルオーバーが繰り返されたことにより、クラッシュリカバリ処理に時間がかかるようになり、Enterprise Postgresの起動がタイムアウトになったことが原因です。
[対処方法]
フェイルオーバー時のタイムアウトを予防するには以下の対処方法があります。それぞれの対処にはメリット/デメリットがありますので、対処時は十分にご検討ください。- PRIMECLUSTERのタイムアウト時間を延ばす
- Enterprise Postgresのmax_wal_sizeを小さくする
1.の対処について- メリット
PRIMECLUSTERのタイムアウトの値を大きな値へ変更された場合、変更した分だけ、切り替えまでの時間が長くなります。延長された時間内で問題が解決した場合は、システム稼働上問題として検知されず、業務継続可能です。 - デメリット
フェイルオーバー時の切り替えに時間がかかっている場合に、異常と判断するまでの時間が長くなります。
2.の対処について- メリット
max_wal_sizeの値を小さく設定した場合、保持されるWALの量が小さくなるため、切り替え時間が短くなり、タイムアウトに抵触する可能性が下がります。 - デメリット
checkpointが発生する頻度があがるため、通常業務でのレスポンス性能が劣化する場合があります。
フェイルオーバーの切り替え時間の詳細は以下のマニュアルを参照してください。
FUJITSU Software Enterprise Postgres 13 SP1
クラスタ運用ガイド(PRIMECLUSTER編)
第2章 フェイルオーバー運用のセットアップ
2.8 FUJITSU Enterprise Postgresのデータベースクラスタのリソース情報の登録
max_wal_sizeの詳細は以下のマニュアルを参照してください。
FUJITSU Software Enterprise Postgres 13 SP1
PostgreSQL 13.3 Documentation
Part II. The SQL Language
Chapter 14. Performance Tips
14.4. Populating a Database
14.4.6. Increase max_wal_size
なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス情報 |
|
||||
---|---|---|---|---|---|
アンサー種別 | 設計/開発 |