Что такое репликация MongoDB?
Репликация относится к процессу обеспечения доступности одних и тех же данных на нескольких серверах Mongo DB. Иногда это требуется с целью повышения доступности данных.
Потому что, если ваш основной сервер MongoDB выйдет из строя по какой-либо причине, доступа к данным не будет. Но если у вас есть данные, реплицированные на другой сервер через регулярные промежутки времени, вы сможете получить доступ к данным с другого сервера, даже если основной сервер выйдет из строя.
Еще одна цель репликации - возможность балансировки нагрузки. Если к системе подключается много пользователей, вместо того, чтобы все подключались к одной системе, пользователи могут подключаться к нескольким серверам, чтобы обеспечить равномерное распределение нагрузки.
В MongoDB несколько серверов MongDB сгруппированы в наборы, называемые наборами реплик. В наборе реплик будет первичный сервер, который будет принимать все операции записи от клиентов. Все остальные экземпляры, добавленные к набору после этого, будут называться вторичными экземплярами, которые могут использоваться в первую очередь для всех операций чтения.
В этом руководстве вы узнаете -
- Набор реплик: добавление первого члена с помощью rs.initiate ()
- Набор реплик: добавление вторичного с помощью rs.add ()
- Набор реплик: перенастройка или удаление с помощью rs.remove ()
- Устранение неполадок наборов реплик
Набор реплик: добавление первого члена с помощью rs.initiate ()
Как упоминалось в предыдущем разделе, чтобы включить репликацию, нам сначала нужно создать набор реплик экземпляров MongoDB.
Предположим, что для нашего примера у нас есть 3 сервера с именами ServerA, ServerB и ServerC. В этой конфигурации ServerA будет нашим первичным сервером, а ServerB и ServerC - нашими вторичными серверами. Ниже снимок экрана даст лучшее представление об этом.
Ниже приведены шаги, которые необходимо выполнить для создания набора реплик вместе с добавлением первого члена в набор.
Шаг 1) Убедитесь, что все экземпляры mongod.exe, которые будут добавлены в набор реплик, установлены на разных серверах. Это сделано для того, чтобы гарантировать, что даже если один сервер выйдет из строя, другие будут доступны и, следовательно, будут доступны другие экземпляры MongoDB.
Шаг 2) Убедитесь, что все экземпляры mongo.exe могут подключаться друг к другу. Из ServerA выполните следующие 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")
Устранение неполадок наборов реплик
Следующие шаги представляют собой те же способы устранения неполадок, когда возникают проблемы с использованием наборов реплик.
- Убедитесь, что все экземпляры mongo.exe могут подключаться друг к другу. Предположим, у вас есть 3 сервера с именами ServerA, ServerB и ServerC. С сервера A выполните следующие 2 команды
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Запустите команду rs.status. Эта команда показывает статус набора реплик. По умолчанию каждый участник будет отправлять друг другу сообщения, называемые «пульсирующими» сообщениями, которые просто указывают на то, что сервер активен и работает. Команда «status» получает статус этих сообщений и показывает, есть ли какие-либо проблемы с какими-либо членами в наборе реплик.
- Проверьте размер Oplog - Oplog - это коллекция в MongoDB, в которой хранится история записей, которые были сделаны в базу данных MongoDB. Затем MongoDB использует этот журнал операций для репликации записей другим участникам в наборе реплик. Чтобы проверить журнал операций, подключитесь к необходимому экземпляру члена и выполните команду rs.printReplicationInfo. Эта команда покажет размер журнала и то, как долго он может хранить транзакции в своем файле журнала, прежде чем он заполнится.
Резюме: