Репликация баз данных
Репликация баз данных — это поддержание одной или нескольких копий базы на отдельных серверах в актуальном состоянии: изменения с основного сервера автоматически переносятся на резервные. Главная цель — отказоустойчивость: если основной сервер выходит из строя, работу продолжает реплика, а пользователи почти не замечают сбоя.
Master-slave: основная схема
Классическая модель — master-slave (ведущий-ведомый), сегодня чаще называют primary-replica. На ведущем сервере (master) приложение пишет и читает данные. Каждое изменение тут же передаётся на один или несколько ведомых серверов (slave), где данные дублируются. Ведомые серверы используются для чтения и как горячий резерв на случай отказа ведущего.
При отказе мастера один из ведомых повышается до роли нового мастера — это называется failover. В правильно настроенной системе переключение происходит автоматически или за минуты вручную, что резко сокращает время простоя.
Потоковая репликация
В PostgreSQL основной механизм — потоковая репликация (streaming replication). Ведущий сервер непрерывно передаёт журнал изменений (WAL — write-ahead log) на реплики, и те применяют изменения почти в реальном времени. Репликация бывает:
- Асинхронная — мастер не ждёт подтверждения от реплик. Быстрее, но при внезапном отказе мастера возможна потеря последних транзакций
- Синхронная — мастер подтверждает запись только после её получения репликой. Надёжнее против потери данных, но медленнее
Выбор между ними — это всегда баланс между скоростью и гарантией сохранности данных под конкретные требования бизнеса.
Репликация — это не бэкап
Репликация защищает от отказа железа, но не от ошибки. Если кто-то удалил данные или их повредил шифровальщик — изменение мгновенно повторится на всех репликах. Поэтому репликация не заменяет резервное копирование, а дополняет его.
Эти две практики решают разные задачи: резервное копирование возвращает данные в прошлое после ошибки, а репликация обеспечивает непрерывность работы при отказе оборудования. Зрелая инфраструктура использует обе.
Зачем ещё нужна репликация
- Отказоустойчивость — резервный сервёр подхватывает нагрузку при сбое основного
- Масштабирование чтения — тяжёлые отчётные запросы и аналитику можно направить на реплики, разгрузив основной сервер
- Геораспределение — реплика ближе к пользователям в другом регионе ускоряет чтение
- Подготовка к катастрофам — реплика на отдельной площадке — часть плана аварийного восстановления
Репликация — один из строительных блоков отказоустойчивого кластера высокой доступности (HA). Как из неё и резервирования собирается план восстановления — в нашем блоге: план восстановления (DR) — RTO и RPO.
Что включает наша услуга
- Проектирование схемы репликации под требования по доступности
- Настройка потоковой репликации для PostgreSQL и других СУБД
- Настройка автоматического failover и мониторинга задержки реплик
- Учебные переключения и проверка отказоустойчивости
- Сопровождение кластера 24/7 из нашего NOC
Связанные термины
- Резервное копирование баз данных — дополняет репликацию, защищает от ошибок и повреждения
- HA-кластер и DRS — отказоустойчивость на уровне инфраструктуры
- Репликация данных — общий принцип дублирования данных между узлами
Получить расчёт
Откройте калькулятор и отметьте услуги по отказоустойчивости баз данных — получите ориентир по цене. Финальная смета — после обследования инфраструктуры.
Хотите оценить стоимость под свою инфраструктуру?
Откройте калькулятор, отметьте нужные услуги — получите ориентир за минуту. Финальная смета после обследования (±15%).
Открыть калькулятор Получить КП