MongoDB Репликация: как создать MongoDB Набор реплик

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

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

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

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

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

Как создать набор реплик в MongoDB Добавление первого члена с помощью rs.initiate()

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

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

Создать набор реплик в MongoDB

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

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

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

Шаг 2) Все экземпляры mongo.exe подключаются друг к другу.

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

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

Аналогично проделайте то же самое с остальными серверами.

Шаг 3) Запустите первый экземпляр mongod.exe.

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

mongo –replSet "Replica1"

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

Шаг 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 выполните следующие две команды:
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
  1. Запустите команду rs.status. Эта команда дает статус набора реплик. По умолчанию каждый участник будет отправлять друг другу сообщения, называемые «пульсирующими сообщениями», которые просто указывают на то, что сервер жив и работает. Команда «статус» получает статус этих сообщений и показывает, есть ли какие-либо проблемы с какими-либо членами набора реплик.
  2. Проверьте размер Oplog. Oplog — это коллекция в MongoDB который хранит историю записей, которые были сделаны на MongoDB база данных. MongoDB затем использует этот Oplog для репликации записей другим членам набора реплик. Чтобы проверить Oplog, подключитесь к необходимому экземпляру участника и выполните команду rs.printReplicationInfo. Эта команда покажет размер журнала и то, как долго он может хранить транзакции в своем файле журнала, прежде чем он заполнится.

Итого

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