Репликация обеспечивает избыточность, отказоустойчивость и масштабируемость за счет создания копий данных на разных серверах.
Основные особенности:
- Синхронная и асинхронная: Синхронная гарантирует, что данные записаны на всех репликах до подтверждения клиенту, обеспечивая высокую согласованность, но потенциально замедляя запись. Асинхронная подтверждает запись клиенту до ее применения на всех репликах, быстрее, но с возможной задержкой в распространении изменений.
- Мастер-слейв (главный-подчиненный): Одна реплика (мастер) обрабатывает записи, остальные (слейвы) - только чтение. Записи с мастера распространяются на слейвы. Просто в реализации, но может стать узким местом при высокой нагрузке на запись.
- Мультимастер: Несколько реплик могут принимать записи. Увеличивает доступность для записи, но требует разрешения конфликтов при одновременной записи в одну и ту же запись на разных мастерах.
- Задержка репликации: Время между записью на мастере и появлением данных на слейве. Может приводить к чтению устаревших данных с слейвов в асинхронной репликации.
- Разрешение конфликтов: Необходим в мультимастер-репликации. Могут использоваться различные стратегии: "последняя запись выигрывает", версия данных, пользовательские функции.
- Нагрузочное тестирование: Важно для определения оптимальной конфигурации и количества реплик.
- Мониторинг: Отслеживание статуса репликации, задержки, ошибок.
python
Таблица: Сравнение типов репликации
| Тип репликации | Запись | Чтение | Сложность | Согласованность |
|---|
| Мастер-слейв | Мастер | Мастер и слейвы | Низкая | Высокая (синхр.), Низкая (асинхр.) |
| Мультимастер | Все реплики | Все реплики | Высокая | Зависит от стратегии разрешения конфликтов |