DBAtlas · データベース運用アトラス

Patroniで壊れたレプリカを再構築(reinit)

PostgreSQLPatroni

コマンド

# Wipe the replica's PGDATA and rebuild it (create_replica_methods: pgbackrest/basebackup):
patronictl -c /etc/patroni/patroni.yml reinit <cluster> <member> --wait --force
# Take the basebackup directly from the leader instead of the backup repository:
patronictl -c /etc/patroni/patroni.yml reinit <cluster> <member> --from-leader --wait --force

概要

指定したレプリカのデータディレクトリを削除し、Patroniのcreate_replica_methods(pgBackRestのリストアまたはpg_basebackup)に従って一から再構築する。

使用する場面

タイムラインの不一致、pg_rewindの失敗、WALの欠落、データ破損によりレプリカがレプリケーションに再参加できないときに。

注意

メンバーのローカルデータはすべて削除される。コマンドが正しいメンバーを対象としていることを再確認する(Patroniはリーダーでのreinitを拒否する)。大規模データベースでは数時間かかる場合があり、リーダーにI/O/ネットワーク負荷がかかる。その間、クラスタはレプリカが1つ少ない状態で稼働する。--from-leaderは最近のPatroni 4.xリリースにのみ存在し(patronictl reinit --helpで確認する)、create_replica_methodsをスキップしてリーダーからpg_basebackupを取得する。

DBAtlas で開く →

関連項目