DBAtlas · 데이터베이스 운영 아틀라스

Patroni로 손상된 replica 재구축(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

하는 일

지정한 replica의 데이터 디렉터리를 삭제하고 Patroni의 create_replica_methods(pgBackRest restore 또는 pg_basebackup)에 따라 처음부터 재구축한다.

사용 시점

timeline 불일치, pg_rewind 실패, WAL 누락, 데이터 손상으로 replica가 복제에 재합류하지 못할 때.

주의

해당 멤버의 로컬 데이터가 모두 삭제되므로 명령이 올바른 멤버를 대상으로 하는지 재확인한다(Patroni는 leader에 대한 reinit을 거부한다). 대형 데이터베이스에서는 몇 시간이 걸릴 수 있고 leader에 I/O/네트워크 부하를 주며, 그동안 클러스터는 replica 하나가 부족한 상태로 운영된다. --from-leader는 최근 Patroni 4.x 릴리스에만 있다(patronictl reinit --help로 확인). create_replica_methods를 건너뛰고 leader에서 pg_basebackup을 수행한다.

DBAtlas에서 열기 →

관련 항목