Приходилось ли реплицировать MongoDB
Python
Middle
Без компании
Приходилось ли реплицировать MongoDB
Ответы
Да, приходилось. MongoDB поддерживает несколько механизмов репликации для обеспечения отказоустойчивости и высокой доступности данных. Основной подход — использование **Replica Set**, где данные автоматически синхронизируются между первичным (primary) и вторичными (secondary) узлами.
Пример настройки Replica Set в MongoDB:
```
// Конфигурация Replica Set
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017", arbiterOnly: true }
]
})
```
Ключевые моменты:
- **Primary** — принимает все операции записи.
- **Secondary** — реплицирует данные с primary, может использоваться для чтения.
- **Arbiter** — участвует в выборах primary, но не хранит данные.
Для работы с репликой в Python (PyMongo):
```
from pymongo import MongoClient
# Подключение к Replica Set
client = MongoClient(
"mongodb://mongo1:27017,mongo2:27017,mongo3:27017/?replicaSet=rs0"
)
db = client.example_db
```
Нюансы:
- Автоматический failover при падении primary.
- Чтение из secondary (`readPreference=secondary`).
- Задержка репликации (может быть критична для некоторых сценариев).