Репликация — это процесс создания и поддержки нескольких копий данных в разных местоположениях.
Основные виды репликации таблиц:
-
Master-Replica (Односторонняя, Asynchronous/Synchronous):
- Master-Asynchronous Replica: Изменения вносятся на мастер-сервере и асинхронно реплицируются на реплики. Быстрая запись на мастер, но возможна потеря данных при сбое мастера до репликации.
- Master-Synchronous Replica: Изменения на мастере считаются завершенными только после их подтверждения на всех репликах. Обеспечивает согласованность данных, но медленнее записи на мастер.
-
Multi-Master (Двусторонняя):
- Изменения могут вноситься на любом из мастер-серверов и затем реплицируются на все остальные. Требует разрешения конфликтов при одновременных изменениях одних и тех же данных на разных серверах.
-
Peer-to-Peer:
- Каждый участник репликации может читать и писать данные, и изменения распространяются на всех остальных. Это обобщение Multi-Master, где нет строгого понятия "мастер".
-
Transactional Replication:
- Реплицируются отдельные транзакции по мере их совершения. Подходит для сценариев, где важна низкая задержка и высокая согласованность.
-
Snapshot Replication:
- Создается полная копия данных (снимок) в определенный момент времени и реплицируется на подписчиков. Используется для начальной синхронизации или для таблиц, которые редко меняются.
-
Merge Replication:
- Позволяет участникам работать автономно, а затем объединять изменения. Используется в сценариях с мобильными пользователями или в географически распределенных системах. Требует сложного разрешения конфликтов.
-
Logical Replication:
- Реплицируется не физическое представление данных, а логические изменения (операции INSERT, UPDATE, DELETE). Позволяет реплицировать данные между базами данных с разной схемой или даже разными СУБД.
Примеры:
- MySQL Replication (Master-Replica)
- PostgreSQL Logical Replication
- MongoDB Replica Sets (Primary-Secondary)
- Galera Cluster (Multi-Master)