Reconstruir rápidamente un standby con delta restore de pgBackRest
PostgreSQLBackup y PITRComando
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.
Relacionado
- Configurar el archivado de WAL para pgBackRest (archive-push/archive-get)
- Crear la stanza de pgBackRest y verificar el archivado (stanza-create/check)
- Tomar backups completos, diferenciales e incrementales con pgBackRest
- Mostrar el catálogo de backups de pgBackRest y el rango del archivo de WAL (info)
- Restaurar el último backup con pgBackRest
- Restaurar a un punto en el tiempo con pgBackRest (PITR, --type=time)