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() в клиенте монго.