LINUX.ORG.RU
ФорумAdmin

Странности с восстановлением PostgreSQL из бекапа

 pgbackrest, , repmgr


0

3

Есть кластер PostgreSQL 15. ОС хоста Rocky 8. Конфигурация кластера: master + реплика. Репликацию настраивал через repmgr. В кластере настроены бекапы с помощью PgBackRest на внешнее S3 хранилище. WAL льется с мастера, файлы данных — с реплики. Все как здесь написано: https://habr.com/ru/articles/518232/.

Если грохнуть базу и восстановить последнее состояние с помощью sudo -u postgres pgbackrest --stanza=cluster restore, то всё отрабатывает как положено.

Хочу протестировать кейс с Point in Time Recovery.

  1. Создаю базу данных.
  2. Наполняю её тестовыми данными.
  3. Делаю полный бекап sudo -u postgres pgbackrest --stanza=cluster --log-level-console=info --type=full backup. Запоминаю время окончания бекапа.
  4. Дропаю таблицу. PostgreSQL делает чекпоинт и отправляет WAL в S3. Хочу восстановиться на момент, когда таблица не была удалена (т.е. WAL, который после бекапа из п.3 восстанавливать не надо).
  5. Останавливаю master и replica systemctl stop postgresql-15.
  6. Удаляю все файлы с master и replica sudo -u postgres find /var/lib/pgsql/15/data -mindepth 1 -delete.
  7. Смотрю в какое время завершился бекап с помощью sudo -u postgres pgbackrest --stanza=cluster info.
  8. Запускаю команду вида sudo -u postgres pgbackrest --stanza=cluster --type=time --target="время-завершения-бекапа" restore.
  9. Запускаю master.
  10. Вижу, что master находится в recovery, поэтому выполняю на select pg_wal_replay_resume();.
  11. С помощью repmgr standby clone наливаю реплику.
  12. Запускаю реплику и повторно регистрирую ее в master: repmgr standby register -F.

Вижу предупреждение вида

WARNING: following issues were detected
  - WAL replay is paused on node "192.168.1.126" (ID: 2) with WAL replay pending; this node cannot be manually promoted until WAL replay is resumed

Вопросы:

  1. Что я делаю не так?
  2. Как поднять реплику после восстановления из бекапа?

validate restore > /dev/null делаете?
* это не реальная команда рестора
просто гдето в стримах дата егрет/пгпро слышал что полезно прогонять тестовые ресторы в /dev/null для поиска hidden error в бинарных бекапах.
** это a-like wal-g/pg_basebackup[[-]pro(?)]

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)