# クラスターの一時停止/再開モード

> Patroniクラスター管理における一時停止および再開モードの動作。

---

LLMSインデックス: [llms.txt](/ja/llms.txt)

---

<a id="pause"></a>

--------

## 目的 {#the-goal}

ある条件下では、Patroniはクラスターの管理を一時的に停止する必要がありますが、その間もクラスター状態をDCSに保持します。このような状況の例として、メジャーバージョンのアップグレードや破損からの復旧など、稀なクラスター操作が挙げられます。これらの操作中は、Patroniが認識しない理由でノードの起動・停止が頻発し、一部のノードが一時的にプライマリーに昇格する場合もあり、その結果、同時に1つのプライマリーしか実行されていないという前提が破られることがあります。したがって、Patroniは実行中のクラスターから「分離」できる必要があり、これによりPacemakerのメンテナンスモードと同等の動作を実現します。

--------

## 実装 {#the-implementation}

Patroniが一時停止モードで実行されている場合、PostgreSQLの状態を変更しません。ただし、以下のケースを除きます。

- 各ノードについて、DCSのメンバーキーはクラスターに関する現在の情報をもとに更新されます。これにより、メンバーノードが実行中である場合、Patroniはそのノードで読み取り専用のクエリーを実行します。
- リーダーロックを持つPostgresのプライマリーでは、Patroniがロックを更新します。リーダーロックを持つノードがプライマリーでなくなる（つまり手動で降格された）場合、Patroniはそのノードを再び昇格するのではなく、ロックを解放します。
- 手動での予定外の再起動、手動での予定外のフェイルオーバー／スイッチオーバー、および再初期化は許可されています。スケジュールされた操作は許可されません。手動スイッチオーバーは、切り替え先のノードが指定されている場合にのみ許可されます。
- Patroniが「並列」なプライマリーを検出すると警告を発しますが、リーダーロックを持たないプライマリーを降格させることはありません。
- クラスターにリーダーロックが存在しない場合、実行中のプライマリーがロックを取得します。プライマリーノードが複数存在する場合、ロックを最初に取得したプライマリーが勝者となります。プライマリーがまったく存在しない場合、Patroniはレプリカの昇格を試みません。このルールには例外があります。以前のプライマリーが手動での昇格により自己降格したためにリーダーロックが存在しない場合、昇格リクエストで指定された候補ノードのみがリーダーロックを取得できます。新しいリーダーロックが付与された場合（すなわち手動でレプリカを昇格した後）、Patroniは、以前のリーダーからストリーミングしていたレプリカが新しいリーダーに切り替わるようにします。
- Postgresが停止している場合、Patroniはその起動を試みません。Patroniを停止した場合、管理しているPostgresインスタンスの停止を試みません。
- Patroniは、他のクラスターメンバーを表すスロットでも、永続スロットの構成に記載されたスロットでもないレプリケーションスロットを削除しようとはしません。

--------

## ユーザーガイド {#user-guide}

[patronictl](/ja/docs/patroni/patronictl#patronictl)は[pause](/ja/docs/patroni/patronictl#patronictl_pause)および[resume](/ja/docs/patroni/patronictl#patronictl_resume)コマンドをサポートしています。

また、Patroni REST APIに`{"pause": true/false/null}`を指定して`PATCH /config`リクエストを送り、DCS内の`{namespace}/{cluster}/config`キーを更新することもできます。

---

逆リンク:

- [FAQ](/ja/docs/patroni/faq/)
- [リリースノート](/ja/docs/patroni/releases/)
- [Patroni REST API](/ja/docs/patroni/rest_api/)
