Учебники

16) Репликация

Что такое репликация MongoDB?

Репликация относится к процессу обеспечения доступности одних и тех же данных на нескольких серверах Mongo DB. Иногда это требуется для повышения доступности данных.

Потому что если по какой-либо причине ваш основной Сервер MongoDB выйдет из строя, доступ к данным будет невозможен. Но если вы регулярно реплицируете данные на другой сервер, вы сможете получить доступ к данным с другого сервера даже в случае сбоя основного сервера.

Другой целью репликации является возможность балансировки нагрузки. Если к системе подключено много пользователей, вместо того, чтобы все подключались к одной системе, пользователи могут подключаться к нескольким серверам, что обеспечивает равномерное распределение нагрузки.

В MongoDB несколько серверов MongDB сгруппированы в наборы, называемые наборами реплик. Набор реплик будет иметь основной сервер, который будет принимать все операции записи от клиентов. Все остальные экземпляры, добавленные в набор после этого, будут называться вторичными экземплярами, которые могут быть использованы в основном для всех операций чтения.

В этом уроке вы узнаете —

Набор реплик: добавление первого члена с помощью rs.initiate ()

Как упоминалось в предыдущем разделе, чтобы включить репликацию, нам сначала нужно создать набор реплик экземпляров MongoDB.

Предположим, что для нашего примера у нас есть 3 сервера с именами ServerA, ServerB и ServerC. В этой конфигурации ServerA будет нашим Первичным сервером, а ServerB и ServerC будут нашими вторичными серверами. Ниже скриншот даст лучшее представление об этом.

Учебник по набору реплик MongoDB

Ниже приведены шаги, которые необходимо выполнить для создания набора реплик вместе с добавлением первого члена в набор.

Шаг 1) Убедитесь, что все экземпляры mongod.exe, которые будут добавлены в набор реплик, установлены на разных серверах. Это необходимо для того, чтобы даже если один сервер вышел из строя, другие были доступны, и, следовательно, будут доступны другие экземпляры MongoDB.

Шаг 2) Убедитесь, что все экземпляры mongo.exe могут подключаться друг к другу. С сервера A введите следующие 2 команды

mongo –host ServerB –port 27017
mongo –host ServerC –port 27017

Аналогичным образом сделайте то же самое с оставшимися серверами.

Шаг 3) Запустите первый экземпляр mongod.exe с параметром replSet. Эта опция обеспечивает группировку для всех серверов, которые будут частью этого набора реплик.

mongo –replSet "Replica1"

Где «Replica1» — это имя вашего набора реплик. Вы можете выбрать любое значимое имя для своего имени набора реплик.

Шаг 4) Теперь, когда первый сервер добавлен в набор реплик, следующий шаг — запустить набор реплик, введя следующую команду rs.initiate ()

Шаг 5) Проверьте установленную реплику, введя команду rs.conf (), чтобы убедиться, что реплика настроена правильно

Набор реплик: добавление вторичного объекта с помощью rs.add ()

Вторичные серверы могут быть добавлены в набор реплик с помощью команды rs.add. Эта команда берет имя вторичного сервера и добавляет серверы в набор репликации.

Шаг 1) Предположим, что если у вас есть ServerA, ServerB и ServerC, которые должны быть частью вашего набора реплик, а ServerA определен как основной сервер в наборе реплик.

Чтобы добавить ServerB и ServerC в набор реплик, выполните команды

rs.add("ServerB")
rs.add("ServerC")

Набор реплик: перенастройка или удаление с помощью rs.remove ()

Чтобы удалить сервер из набора конфигурации, нам нужно использовать команду «rs.remove»

Шаг 1) Сначала выполните отключение экземпляра, который вы хотите удалить. Это можно сделать, введя команду db.shutdownserver из оболочки mongo.

Шаг 2) Подключитесь к основному серверу

Шаг 3) Используйте команду rs.remove, чтобы удалить нужный сервер из набора реплик. Поэтому предположим, что если у вас есть набор реплик с ServerA, ServerB и ServerC, и вы хотите удалить ServerC из набора реплик, введите команду

rs.remove("ServerC")

Устранение неполадок наборов реплик

Следующие шаги — это те же способы устранения неполадок, возникающих при использовании наборов реплик.

  1. Убедитесь, что все экземпляры mongo.exe могут подключаться друг к другу. Предположим, если у вас есть 3 сервера с именами ServerA, ServerB и ServerC. С сервера A введите следующие 2 команды
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
  1. Запустите команду rs.status. Эта команда дает статус набора реплик. По умолчанию каждый участник отправляет сообщения друг другу, называемые сообщениями «пульс», которые просто указывают, что сервер жив и работает. Команда «status» получает статус этих сообщений и показывает, есть ли какие-либо проблемы с какими-либо участниками в наборе реплик.
  2. Проверьте размер Oplog — Oplog — это коллекция в MongoDB, которая хранит историю записей, которые были сделаны в базу данных MongoDB. Затем MongoDB использует этот журнал операций для репликации записей другим членам в наборе реплик. Чтобы проверить журнал операций, подключитесь к необходимому экземпляру члена и выполните команду rs.printReplicationInfo. Эта команда покажет размер журнала и сколько времени он может хранить транзакции в своем файле журнала, прежде чем он будет заполнен.

Резюме:

  • Репликация относится к процессу обеспечения доступности одних и тех же данных на нескольких серверах Mongo DB. Многие члены (экземпляры MongoDB) могут быть добавлены в набор реплик в зависимости от требований.
  •