DBAtlas · 数据库运维图谱

使用 pgBackRest delta 还原快速重建备库

PostgreSQL备份与 PITR

命令

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;"

作用

--delta 将现有 PGDATA 中的文件与备份进行比较(大小/时间戳和校验和),只复制不同的文件;--type=standby 写入 standby.signal,recovery-option 添加 primary_conninfo。备库先从归档追赶,然后切换到流复制。

适用场景

用于在不完整复制的情况下,将落后或 timeline 分叉的备库,或 pg_rewind 失败的旧主库重新变为副本。

注意

delta 会用备份中的文件替换/删除目标目录中不同或多余的文件;在错误的服务器上运行会破坏该服务器的数据。pgBackRest 拒绝在运行中的 PostgreSQL 上还原,但请自行确认服务已停止。将密码保存在 .pgpass 中,而不是 primary_conninfo 中。

在 DBAtlas 中打开 →

相关内容