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

⚡ Умное резюме

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

  • 🇧🇷 Основная концепция: Репликация копирует одни и те же данные на несколько серверов, обеспечивая доступность информации даже при сбое основного сервера.
  • ???? Начальное и среднее образование: В репликационном наборе есть один основной узел, принимающий операции записи, и дополнительные узлы, обслуживающие операции чтения.
  • 🚀 Создание набора: Команда rs.initiate() запускает репликационный набор после запуска первого экземпляра mongod с опцией replSet.
  • Добавление участников: Команда rs.add() подключает дополнительные серверы, а rs.remove() отключает участника от конфигурации.
  • 🔧 Поиск и устранение неисправностей: Команды rs.status() и rs.printReplicationInfo() предоставляют информацию о состоянии пульса и размере журнала операций (Oplog) для диагностики.

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

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

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

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

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

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

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

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

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

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

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

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

Убедитесь, что все экземпляры 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. Эта опция предоставляет группуping для всех серверов, которые войдут в состав этого репликационного набора.

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

Часто задаваемые вопросы (FAQ)

Да. Искусственный интеллект может генерировать параметры запуска mongod, конфигурацию rs.initiate() и команды rs.add() для репликационного набора. Всегда проверяйте имена хостов, порты и приоритеты участников перед применением конфигурации к производственным серверам.

Да. Инструменты мониторинга на основе ИИ могут считывать метрики rs.status() и Oplog, чтобы выявлять вторичные серверы, отстающие от основного. Они могут указывать на такие причины, как задержка сети или медленная работа дисков, но инженерам следует подтвердить это перед принятием мер.

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

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

Подведем итог этой публикации следующим образом: