Назад к вопросам
Junior
97
questionbank
Что такое replica set и для чего он нужен?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Реплика сет в MongoDB — это группа из нескольких серверов (узлов, members) MongoDB, которые совместно хранят идентичные наборы данных. Он обеспечивает высокую доступность и отказоустойчивость.
Ключевые компоненты:
- Primary: Один узел, который принимает все операции записи.
- Secondaries: Один или несколько узлов, которые реплицируют данные с primary и могут обрабатывать операции чтения.
- Arbiter (опционально): Узел, который не хранит данные, а участвует только в выборах primary в случае сбоя.
Основные цели использования:
- Высокая доступность: Если primary узел выходит из строя, secondaries автоматически избирают нового primary, обеспечивая непрерывную работу.
- Отказоустойчивость: Данные дублируются на нескольких узлах, минимизируя риск потери данных при сбое одного узла.
- Распределённое чтение: Операции чтения могут быть распределены между secondary узлами, увеличивая пропускную способность.
- Восстановление данных: Реплика сет упрощает восстановление данных после сбоя.
Процесс работы: операции записи сначала применяются к primary, затем асинхронно реплицируются на secondaries через oplog (операционный лог).
Пример конфигурации (инициализация реплика сета):
// Подключаемся к MongoDB как обычно
// ...
rs.initiate({
_id: "myReplicaSet", // Имя реплика сета
members: [
{ _id: 0, host: "mongo1.example.com:27017" }, // Primary
{ _id: 1, host: "mongo2.example.com:27017" }, // Secondary
{ _id: 2, host: "mongo3.example.com:27017", priority: 0, votes: 1 } // Arbiter
]
})
Таблица ролей узлов:
| Роль | Приём записей | Приём чтений (по умолчанию) | Хранение данных | Участие в выборах |
|---|---|---|---|---|
| Primary | Да | Да | Да | Да |
| Secondary | Нет | Да* | Да | Да |
| Arbiter | Нет | Нет | Нет | Да |
* Чтение из secondary можно настроить с помощью политик чтения.