Пересоздать сломанную реплику через 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.
Связанные материалы
- Показать состояние, топологию и историю кластера Patroni
- Выполнить плановый switchover через Patroni
- Выполнить ручной failover через Patroni
- Изменить параметры всего кластера в Patroni (edit-config) и применить ожидающие перезапуски
- Перевести Patroni в режим обслуживания и обратно (pause/resume)
- Проверить работоспособность DCS Patroni (etcd/Consul) и REST API