MongoDB - Репликация
Репликация - это процесс синхронизации данных на нескольких серверах. Репликация обеспечивает избыточность и увеличивает доступность данных за счет нескольких копий данных на разных серверах баз данных. Репликация защищает базу данных от потери одного сервера. Репликация также позволяет восстанавливаться после сбоя оборудования и прерывания обслуживания. Имея дополнительные копии данных, вы можете выделить одну для аварийного восстановления, создания отчетов или резервного копирования.
Почему репликация?
- Чтобы ваши данные были в безопасности
- Высокая (24 * 7) доступность данных
- Аварийное восстановление
- Отсутствие простоев на обслуживание (например, резервное копирование, восстановление индексов, сжатие)
- Масштабирование чтения (дополнительные копии для чтения)
- Набор реплик прозрачен для приложения
Как работает репликация в MongoDB
MongoDB обеспечивает репликацию с помощью набора реплик. Набор реплик - это группаmongodэкземпляры, содержащие один и тот же набор данных. В реплике один узел является основным узлом, который принимает все операции записи. Все другие экземпляры, такие как вторичные, применяют операции из первичного, чтобы у них был тот же набор данных. Набор реплик может иметь только один основной узел.
Набор реплик - это группа из двух или более узлов (обычно требуется минимум 3 узла).
В наборе реплик один узел является первичным, а остальные - вторичными.
Все данные реплицируются с первичного на вторичный узел.
Во время автоматического переключения при отказе или обслуживания выбирается основной и выбирается новый основной узел.
После восстановления отказавшего узла он снова присоединяется к набору реплик и работает как вторичный узел.
Показана типичная схема репликации MongoDB, на которой клиентское приложение всегда взаимодействует с первичным узлом, а первичный узел затем реплицирует данные на вторичные узлы.
Функции набора реплик
- Кластер из N узлов
- Любой узел может быть первичным
- Все операции записи переходят к основному
- Автоматическое переключение при отказе
- Автоматическое восстановление
- Консенсусные выборы первичных
Настройка набора реплик
В этом руководстве мы преобразуем автономный экземпляр MongoDB в набор реплик. Чтобы преобразовать в набор реплик, выполните следующие действия:
Завершение работы уже запущенного сервера MongoDB.
Запустите сервер MongoDB, указав параметр - replSet. Ниже приведен основной синтаксис --replSet -
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
пример
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
Он запустит экземпляр mongod с именем rs0 на порту 27017.
Теперь запустите командную строку и подключитесь к этому экземпляру mongod.
В клиенте Mongo введите команду rs.initiate() для создания нового набора реплик.
Чтобы проверить конфигурацию набора реплик, введите команду rs.conf(). Чтобы проверить состояние набора реплик, выполните командуrs.status().
Добавить участников в набор реплик
Чтобы добавить участников в набор реплик, запустите экземпляры mongod на нескольких машинах. Теперь запустите клиент mongo и введите командуrs.add().
Синтаксис
Базовый синтаксис rs.add() команда выглядит следующим образом -
>rs.add(HOST_NAME:PORT)
пример
Предположим, что имя вашего экземпляра mongod - mongod1.net и он работает на порту 27017. Чтобы добавить этот экземпляр в набор реплик, введите командуrs.add() в клиенте Mongo.
>rs.add("mongod1.net:27017")
>
Вы можете добавить экземпляр mongod в набор реплик, только когда вы подключены к первичному узлу. Чтобы проверить, подключены ли вы к основному или нет, введите командуdb.isMaster() в клиенте монго.