Enterprise Postgresにおいて、フェイルオーバーによるデータベースの未起動について

Enterprise Postgres の技術情報はこちら

PRIMECLUSTERにて、Enterprise Postgresのフェイルオーバーを繰り返したところ、Enterprise Postgresが起動しなくなりました。原因と対処方法を教えてください。
[原因]
Enterprise Postgresのフェイルオーバーが発生すると、待機系のEnterprise Postgresの昇格(または起動)時にクラッシュリカバリが実行されます。
フェイルオーバーが繰り返されたことにより、クラッシュリカバリ処理に時間がかかるようになり、Enterprise Postgresの起動がタイムアウトになったことが原因です。

[対処方法]
フェイルオーバー時のタイムアウトを予防するには以下の対処方法があります。それぞれの対処にはメリット/デメリットがありますので、対処時は十分にご検討ください。
  1. PRIMECLUSTERのタイムアウト時間を延ばす
  2. 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
なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス情報
対象製品Enterprise Postgres
プラットフォームLinux
アンサー種別 設計/開発
このページの先頭へ