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

Что делает

Удаляет каталог данных указанной реплики и пересоздаёт её с нуля согласно create_replica_methods Patroni (восстановление pgBackRest или pg_basebackup).

Когда использовать

Когда реплика не может вернуться в репликацию из-за несовпадения timeline, неудачного pg_rewind, отсутствующего WAL или повреждения данных.

Внимание

Все локальные данные участника удаляются; дважды проверьте, что команда нацелена на нужного участника (Patroni отказывается выполнять reinit на leader). На больших базах это может занять часы и создаёт нагрузку I/O/сети на leader; всё это время в кластере на одну реплику меньше. --from-leader есть только в последних релизах Patroni 4.x (проверьте через patronictl reinit --help); он пропускает create_replica_methods и снимает pg_basebackup с leader.

Открыть в DBAtlas →

Связанные материалы