Статьи

Члены набора реплик в Mongodb

В предыдущих статьях мы обсуждали многие аспекты набора реплик в mongodb. И в этих статьях мы много говорили о членах. Итак, что это за члены? Какова их цель? Давайте обсудим эти вещи в этой статье.

Какие участники в mongodb?

Короче говоря, члены в mongodb — это процессы mongod, которые необходимо выполнить в наборе реплик. Сейчас вообще всего 2 члена:

Primary:

Согласно mongodb.org первичные члены получают все операции записи.

Secondary:

Вторичные реплицируют операции с основного для поддержания идентичного набора данных. Дополнительные устройства могут иметь дополнительные конфигурации для специальных профилей использования. Мы можем использовать максимум 12 элементов в наборе реплик. Из которых только 7 могут голосовать. Итак, теперь возникает вопрос: почему члены должны голосовать?

Выбор для основного члена:

Всякий раз, когда начинается набор реплик или основной элемент недоступен. Или, если говорить простым языком, если нет основного члена, то выборы начинаются с выбора основного члена из дополнительных членов. Хотя есть несколько типов участников, чем до 2, мы поговорим о них позже.

Основной член:

Основной элемент — единственный элемент в наборе реплик, который получает операции записи. Mongodb применяет операции записи к первичному серверу, а затем записывает операции в оплог первичного сервера. Все члены набора реплик могут принимать операции чтения. Но по умолчанию приложение направляет свои операции чтения первичному члену. Набор реплик может содержать не более одного основного объекта.
В следующем наборе реплик с тремя участниками первичный принимает все операции записи. Затем вторичные серверы реплицируют оплог для применения к своим наборам данных.

primare_mem.jpg

Вторичный член:

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

secondary_mem.jpg

Скрытые участники:

Кроме двух предыдущих членов, есть другие члены, входящие в набор реплик. Один из них — скрытый член. Скрытые участники не могут стать первичными и невидимыми для клиентских приложений. Скрытые участники голосуют на выборах. Скрытые участники хороши для рабочих нагрузок с другими шаблонами использования, чем у других участников в наборе реплик. Также они всегда должны быть членами с приоритетом 0 и поэтому не могут стать первичными. Наиболее распространенное использование скрытых узлов — поддержка задержанных членов. Чтобы настроить вторичный элемент как скрытый, установите его значение приоритета равным 0 и установите для его скрытого значения значение true в конфигурации его элемента.
Чтобы настроить скрытый член, используйте следующую последовательность в оболочке mongo, подключенной к основному, указав элемент для настройки по индексу массива в массиве members:

1
2
c.members[0].priority = 0
c.members[0].hidden = true

Задержанный член:

Другой участник задерживается. Задержанные участники также копируют данные из набора данных. Но, как следует из названия, скопированный набор данных задерживается, чем фактическое время. Как, например, мы можем сказать, что если у нас есть приложение, чтобы определить текущее время. Затем, если текущее время — 09:00, и у члена есть задержка на час, у члена с задержкой нет операции более поздней, чем 08:00.
Поскольку элементы с задержкой представляют собой «скользящую резервную копию» или текущий «исторический» снимок набора данных, они могут помочь в восстановлении после различных видов человеческих ошибок. Задержанные участники применяют операции из оплога с задержкой. Должно быть равно или больше, чем ваши окна обслуживания. Должно быть меньше, чем емкость оплога. Для получения дополнительной информации о размере журнала.
Чтобы настроить задержанный вторичный элемент, установите для его значения приоритета значение 0, для скрытого значения — значение true, а для значения slaveDelay — количество секунд для задержки.

1
2
3
c.members[0].priority = 0
c.members[0].hidden = true
c.members[0].slaveDelay = 1200

Члены без права голоса:

Существует много разговоров о выборах в наборах реплик. Таким образом, в выборах участвуют лишь немногие члены, которые дают голоса для определения основного члена. Но есть и несколько членов, которые не участвуют в голосовании. Эти члены называются не имеющими права голоса членами. Члены без права голоса позволяют вам добавлять дополнительных участников для чтения с прочтением, не превышая максимум семи членов с правом голоса.
Чтобы настроить участника как не имеющего права голоса, установите для его значения голосов 0.

1
2
c.members[5].votes = 0
c.members[4].votes = 0

Приоритет в членах:

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

Настройка приоритета участника:

Чтобы изменить приоритеты, мы должны обновить массив members в объекте конфигурации реплики. Значением приоритета может быть любое число с плавающей запятой от 0 до 1000. Значением по умолчанию для поля приоритета является 1. Отрегулируйте приоритет во время окна планового обслуживания. Переконфигурирование приоритета может заставить текущий первичный орган уйти в отставку, что приведет к выборам. Чтобы запретить участнику искать выборы в качестве основного, присвойте приоритет этого члена 0.
Мы можем завершить настройку приоритета в 3 простых шага. Давайте посмотрим на них:

  • Скопируйте конфигурацию набора реплик в переменную.

В оболочке mongo используйте rs.conf (), чтобы получить конфигурацию набора реплик и назначить ее переменной. Например:

1
c = rs.conf()
  • Измените значение приоритета каждого участника.

Измените значение приоритета каждого члена, как настроено в массиве members.

1
2
c.members[0].priority = 0.5
c.members[1].priority = 2

Эта последовательность операций изменяет значение c, чтобы установить приоритет для первых двух членов, определенных в массиве members.

  • Присвойте реплике набор новой конфигурации.

Используйте rs.reconfig (), чтобы применить новую конфигурацию.

1
rs.reconfig(c)

В этой статье мы обсудили элементы в наборе реплик. Теперь мы можем сказать, что члены являются самой основой наборов реплик. Чем больше мы узнаем об участниках, тем быстрее мы будем контролировать данные в mongodb.

Ссылка: Члены набора реплик в Mongodb от нашего партнера JCG Бисвадипа Гхоша в блоге на блоге Флокс .