Назад к вопросам
Senior
5
Как восстановить базу данных на определенный момент времени (PITR), имея дамп 50-минутной давности?
Компании, где спрашивали
Octo
Ответ от нейросети
sobes.tech AI
Для восстановления базы данных на определённый момент времени (Point-In-Time Recovery, PITR), имея дамп, например, 50-минутной давности, нужно выполнить следующие шаги:
- Восстановить базу из дампа, который был сделан 50 минут назад.
- Применить все журналы транзакций (лог изменений), которые были созданы после создания дампа, вплоть до нужного момента времени.
Это возможно, если система ведёт журнал транзакций (например, WAL в PostgreSQL) и эти логи доступны.
Пример для PostgreSQL:
- Восстановить базу из дампа:
pg_restore -d target_db dump_file - Настроить восстановление с помощью параметра
recovery_target_timeвrecovery.confили черезpostgresql.conf(в зависимости от версии), указав нужное время. - Запустить сервер в режиме восстановления, чтобы он применил все WAL логи до указанного времени.
Если у вас нет журналов транзакций, то восстановление только из дампа даст состояние базы на момент создания дампа, но не позволит откатиться к более точному времени.
Таким образом, PITR требует наличия и дампа, и журналов транзакций, чтобы откатиться к нужному моменту.