クラスターの一時停止/再開モード¶
目標¶
特定の状況では、Patroniはクラスターの状態をDCSに保持したまま、一時的にクラスターの管理から降りる必要があります。考えられる使用例は、メジャーバージョンのアップグレードや破損の回復など、クラスター上での一般的ではないアクティビティです。これらのアクティビティ中に、Patroniが不明な理由でノードが起動および停止されることが多く、一部のノードは一時的に昇格する可能性があり、プライマリを1つだけ実行するという前提に違反します。したがって、Patroniは、Pacemakerのメンテナンスモードと同等の機能を実装して、実行中のクラスターから「切り離す」ことができる必要があります。
実装¶
Patroniが一時停止モードで実行されている場合、次の場合を除いてPostgreSQLの状態は変更されません。
各ノードについて、DCSのメンバーキーがクラスターに関する現在の情報で更新されます。これにより、メンバーが実行中の場合、Patroniはメンバーノードに対して読み取り専用クエリを実行します。
リーダーロックを持つPostgresプライマリの場合、Patroniはロックを更新します。リーダーロックを持つノードがプライマリでなくなった場合(つまり、手動で降格された場合)、Patroniはノードを昇格させずにロックを解放します。
手動によるスケジュール外の再起動、手動によるスケジュール外のフェイルオーバー/スイッチオーバー、および再初期化が許可されます。スケジュールされたアクションは許可されません。手動スイッチオーバーは、スイッチオーバー先のノードが指定されている場合にのみ許可されます。
「並列」プライマリがPatroniによって検出された場合、警告が発行されますが、リーダーロックがなければプライマリは降格されません。
クラスター内にリーダーロックがない場合は、実行中のプライマリがロックを取得します。複数のプライマリノードがある場合は、最初にロックを取得したプライマリが優先されます。プライマリがまったく存在しない場合、Patroniはレプリカを昇格しようとしません。このルールには例外があります。手動昇格により古いプライマリが降格したためにリーダーロックがない場合、昇格リクエストで指定された候補ノードのみがリーダーロックを取得できます。新しいリーダーロックが付与されると(つまり、レプリカを手動で昇格させた後)、Patroniは前のリーダーからストリーミングされていたレプリカが新しいリーダーに切り替わることを確認します。
Postgresが停止している場合、PatroniはPostgresを起動しようとしません。Patroniが停止しても、管理しているPostgresインスタンスは停止しません。
Patroniは、他のクラスターメンバーを表していないレプリケーションスロット、または永続スロットの構成にリストされていないレプリケーションスロットを削除しようとしません。
ユーザーガイド¶
patronictl は、 patronictl および patronictl コマンドをサポートします。
{/"pause/": true/false/null} を使用して {namespace}/{cluster}/config キーに対して PATCH リクエストを発行することもできます。