В чем разница между backup и replication?

«В чем разница между backup и replication?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Backup (резервное копирование) — это создание копии данных в определенный момент времени для восстановления после сбоев, удаления или повреждения. Резервные копии обычно хранятся отдельно от основного хранилища и могут быть полными, инкрементальными или дифференциальными.

Replication (репликация) — это процесс непрерывного или периодического копирования данных между системами в (почти) реальном времени для обеспечения высокой доступности, отказоустойчивости и распределения нагрузки.

Ключевые отличия с точки зрения DevOps:

Аспект Backup Replication
Основная цель Восстановление данных (Disaster Recovery). Высокая доступность и снижение времени простоя (High Availability).
Гранулярность Восстановление до точки во времени (PITR). Текущее состояние данных (или с небольшой задержкой).
Влияние на RPO/RTO Восстанавливает данные на момент создания бэкапа (длинный RPO). Восстановление может занимать время (длинный RTO). Минимизирует потерю данных (короткий RPO) и ускоряет переключение (короткий RTO).
Типичное использование Архивация, соответствие требованиям, защита от ransomware, случайного удаления. Активно-пассивные или активно-активные кластеры, геораспределение, чтение с реплик.

Практический пример в инфраструктуре:

  • Backup: Ежедневный pg_dump базы PostgreSQL и отправка файла в объектное хранилище S3 с политикой жизненного цикла.
    pg_dump -h localhost -U postgres mydb | gzip > /backups/mydb_$(date +%Y%m%d).sql.gz
    aws s3 cp /backups/mydb_*.sql.gz s3://my-backup-bucket/
  • Replication: Настройка streaming replication в PostgreSQL, где реплика постоянно получает и применяет WAL-логи с мастера.
    -- На реплике в recovery.conf (или postgresql.auto.conf):
    primary_conninfo = 'host=primary-server port=5432 user=replicator password=...'

Вывод: Бэкапы и репликация — это комплементарные, а не взаимозаменяемые стратегии. Резервные копии защищают от логических ошибок и катастроф, а репликация обеспечивает отказоустойчивость и масштабируемость. В production-среде я всегда настраиваю и то, и другое.