Перейти к содержанию

Backup, PITR, RPO и RTO

Механизмы · Системы

Тип материала: архитектурный разбор. Схемы и примеры иллюстративные, если не указано иное.

Версии в источниках: PostgreSQL 17, MySQL 8.4, Oracle 19c, Cassandra 5.0, Redis 7.4 и ClickHouse 25.8 либо явно названный сервис.

Механизм

Backup — восстановимая независимая копия в заданной failure model; PITR восстанавливает состояние к моменту по base+log. RPO задаёт допустимую потерю данных, RTO — допустимое время восстановления сервиса. Это цели, которые проверяются drill, не свойства названия продукта.

flowchart LR
  Backup[Validated base backup] --> Restore[Isolated restore]
  Logs[Continuous retained logs] --> Restore
  Restore --> Validate[Technical and business checks]
  Validate --> Fence[Fence old writer]
  Fence --> Route[Route and reconcile]

Операция чтения или записи по шагам

PG base backup + непрерывный WAL → restore isolated target → replay до target time/LSN → проверить consistency → переключить clients. Oracle RMAN/archived redo и MySQL backup/binlog аналогичны по задаче, но форматы/процедуры не взаимозаменяемы. Search snapshots/table metadata требуют своих engines.

Консистентность, отказ и восстановление

Сбой WAL archive создаёт gap, который делает позднюю часть PITR недостижимой. Ошибочный DELETE реплицируется; backup в том же административном domain может быть удалён вместе с primary. Encryption keys, credentials recovery, schema/roles/config и catalogs — часть restore.

Выбор, эксплуатация и ограничения

RTO включает provisioning, transfer, replay, validation, fencing, routing и прогрев, а не только download. RPO оценивают по фактически доступным logs/replication и acknowledged business operations. Restore одного table может требовать согласования связанных счетов/журналов; физически читаемый файл не доказывает business completeness.

Типичные ошибки проектирования

Называть replica backup; считать последний успешный backup job доказательством restore. Вопрос: snapshot table format достаточен? Нет, referenced files, catalog и keys могут быть потеряны отдельно.

Вопросы на собеседовании

Как доказать применимость механизма? Назвать invariant, scope, isolation/acknowledgement boundary, версию, допустимые interleavings и процедуру восстановления. Один успешный запрос или статическая диаграмма этого не доказывают.

Практические упражнения

Напишите runbook потери primary и отдельного logical corruption с неизвестным временем начала. Определите data cut, контрольные суммы ledger и способ reconcile externally acknowledged payments.

Дополнительные источники

Политика версий и проверки. Статическая проверка статьи не является runtime/fault verification механизма.