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を取得する。