Sobes.tech
Назад к вопросам
Senior
5

Как восстановить базу данных на определенный момент времени (PITR), имея дамп 50-минутной давности?

Компании, где спрашивали
Octo

Ответ от нейросети

sobes.tech AI

Для восстановления базы данных на определённый момент времени (Point-In-Time Recovery, PITR), имея дамп, например, 50-минутной давности, нужно выполнить следующие шаги:

  1. Восстановить базу из дампа, который был сделан 50 минут назад.
  2. Применить все журналы транзакций (лог изменений), которые были созданы после создания дампа, вплоть до нужного момента времени.

Это возможно, если система ведёт журнал транзакций (например, WAL в PostgreSQL) и эти логи доступны.

Пример для PostgreSQL:

  • Восстановить базу из дампа:
    pg_restore -d target_db dump_file
    
  • Настроить восстановление с помощью параметра recovery_target_time в recovery.conf или через postgresql.conf (в зависимости от версии), указав нужное время.
  • Запустить сервер в режиме восстановления, чтобы он применил все WAL логи до указанного времени.

Если у вас нет журналов транзакций, то восстановление только из дампа даст состояние базы на момент создания дампа, но не позволит откатиться к более точному времени.

Таким образом, PITR требует наличия и дампа, и журналов транзакций, чтобы откатиться к нужному моменту.