Перейти к основному содержимому

Восстановление данных из резервной копии на момент времени (PITR)

Технология Point-in-Time Recovery (PITR) позволяет восстановить состояние базы данных на определенный момент времени посредством полной резервной копии и журнала транзакций (WAL-файлов).

Шаги сценария​

  1. Пользователь определяет целевую точку восстановления (LSN, время, контрольная точка или транзакция).
  2. Пользователь инициирует восстановление резервной копии через CLI компонента copywala командой copywala restore <archive uri or path> или copywala restore latest.
  3. copywala запрашивает в хранилище указанный CWL-архив и распаковывает файлы базы данных в заданную директорию.
  4. Продукт выполнят команду, в CLI выводится сообщение с прогрессом и результатом выполнения восстановления данных из резервной копии в заданную директорию.
  5. Пользователь настраивает в конфигурационном файле postgresql.conf команду для восстановления WAL-файлов (restore_command) и параметр целевой точки во времени, до которой требуется произвести восстановление (recovery_target, recovery_target_lsn, recovery_target_name, recovery_target_time, recovery_target_xid).
  6. Пользователь создает в директории восстановленной резервной копии СУБД файл recovery.signal для переключения сервера в режим восстановления.
  7. Пользователь запускает сервер базы данных, указывая в качестве директории данных (PGDATA) путь, куда были восстановлены файлы из резервной копии в шаге 3.
  8. При запуске сервер переходит в режим восстановления и начинает запрашивать необходимые WAL-файлы через restore_command, который вызывает copywala restore-wal %f %p.
  9. copywala запрашивает нужные WAL-файлы в хранилище (определяется параметром wal_destination_uri) и сохраняет их в директорию данных базы данных.
  10. Сервер СУБД применяет WAL-файлы последовательно до достижения заданной точки восстановления.
  11. После завершения восстановления выводится сообщение об успешном восстановлении базы данных до заданной точки во времени.

Исключительные сценарии​

  1. Ошибка запуска сервера. Проанализируйте содержимое лог-файлов.
  2. Отсутствие необходимых WAL-файлов для восстановления до заданной точки. Удостоверьтесь в корректности выбранного момента времени (или LSN) и повторите операцию восстановления.