← К оглавлению занятия

💻 Примеры

📁 Блок: MongoDB / репликация ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая

⚡ Кратко: суть занятия

Репликация в MongoDB — способ повысить надёжность и отказоустойчивость базы данных.

Простая идея: есть несколько копий данных, которые автоматически поддерживаются в синхронизации.

Цели репликации: отказоустойчивость и повышение производительности чтения.

Replica set — группа экземпляров mongod с одним набором данных.

Primary принимает записи, secondary хранят копии и могут помогать с чтением.

Синхронная репликация даёт более актуальные копии, но добавляет задержку.

Асинхронная репликация быстрее для записи, но secondary могут отставать.

Arbiter не хранит данные и участвует в выборах primary при сбое.

Рабочие примеры

Проверить роль узла

db.hello()

Команда помогает понять, подключены ли вы к primary или secondary.

Посмотреть replica set

rs.status()

В статусе видны участники набора реплик, их роли и состояние синхронизации.

Добавить secondary

rs.add("mongo2:27017")

Secondary хранит копию данных primary и может участвовать в выборах.

Добавить arbiter

rs.addArb("mongo-arbiter:27017")

Arbiter добавляет голос для выборов, но не хранит данные.

Настройка чтения

db.getMongo().setReadPref("secondaryPreferred")

Такую настройку используют осторожно: чтение с secondary может вернуть немного устаревшие данные.