DBAtlas · Atlas de operaciones de bases de datos

Reconstruir rápidamente un standby con delta restore de pgBackRest

PostgreSQLBackup y PITR

Comando

sudo systemctl stop postgresql-16
# Keeps the existing PGDATA and fetches only differing files; writes standby.signal:
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=standby "--recovery-option=primary_conninfo=host=<primary_host> port=5432 user=replicator application_name=<standby_name>" restore
sudo systemctl start postgresql-16
psql -X -c "SELECT status, sender_host FROM pg_stat_wal_receiver;"

Qué hace

--delta compara los archivos del PGDATA existente con el backup (tamaño/marca de tiempo y checksum) y copia solo los que difieren; --type=standby escribe standby.signal y recovery-option añade primary_conninfo. El standby primero se pone al día desde el archivo y luego pasa a streaming.

Cuándo usarlo

Para convertir de nuevo en réplica, sin una copia completa, un standby retrasado o con timeline divergente, o un antiguo primario donde falló pg_rewind.

Precaución

Delta sustituye/elimina los archivos distintos o sobrantes del directorio de destino por los del backup; ejecutarlo en el servidor equivocado destruye los datos de ese servidor. pgBackRest se niega a restaurar sobre un PostgreSQL en ejecución, pero verifique usted mismo que el servicio está detenido. Guarde la contraseña en .pgpass en lugar de en primary_conninfo.

Abrir en DBAtlas →

Relacionado