2つのPostgreSQLサーバーをストリーミングでホットスタンバイに設定しました。
マスターサーバーがダウンしたときにスレーブサーバーが自動的に新しいマスターになるように構成するにはどうすればよいですか?
フェイルオーバー-自動またはその他-は、PostgreSQLから直接提供されません。
repmgr のような外部ツールが必要です。
新しくリリースされたrepmgr 2.0は、自動フェイルオーバーをサポートしています。ただし、実際に使用するかどうかについては十分に検討することをお勧めします。手動でトリガーされる自動フェイルオーバーは、通常、LOTより安全です。
自動フェイルオーバーを使用する場合は、通常の操作の一部として自動フェイルオーバーを強制的に実行し、環境で実際に機能していることを確認する必要があります。そうでなければ、それは単なる誤った安心感であり、何かが実際に壊れると、おそらくシステム全体が混乱状態に陥ります。
もちろん、フェイルオーバー設定は定期的にテストする必要がありますが、少なくとも手動でトリガーされるフェイルオーバーでは、それが発生することを認識しており、問題が発生した場合にステップインする準備ができています。
サーバーを昇格させ、古いマスターをレプリカとして再構築するだけの問題でもありません。また、クライアント接続を新しいサーバーに(PgBouncer、PgPool-II、HAProxyなどを使用して)変更する必要性にも対処する必要があります。また、古いサーバーを確実に終了して、相違が生じないようにする必要があります。これにより、両方のサーバーがマスターであると見なし、一部のクライアントがそれぞれに書き込みを行っています。
PostgreSQLのドキュメントとwikiには、これに関するかなりの情報があるので、そこから始めることをお勧めします。
PostgreSQL 9.3以降では [〜#〜] paf [〜#〜] も使用できます。データベースの開始/停止/プロモーションは、Pacemakerクラスター上のリソースを介して行われます。