В этом руководстве вы узнаете, как проверить статус набора реплик в MongoDB.
MongoDB — это документно-ориентированная база данных NoSQL, которая упрощает начало работы с документно-ориентированными базами данных.
Статус MongoDB replica set покажет вам состояние вашего набора реплик, количество реплик в каждом члене, размер набора реплик и их количество. доступны члены набора реплик.
В этом руководстве вы узнаете, как периодически проверять состояние набора реплик в MongoDB.
Монго Шелл
Клиент оболочки Mongo предлагает некоторые вспомогательные функции для взаимодействия с сервером Mongo.
rs.status()
: проверяет статус набора реплик.rs.initiate()
: инициирует набор с настройками по умолчаниюrs.conf()
: получить текущий объект конфигурацииrs.add(hostportstr)
: добавить нового члена в наборrs.remove(hostportstr)
: удалить хост из набора репликrs.printReplicationInfo()
: проверитьoplog
размер и временной диапазонrs.printSecondaryReplicationInfo()
: проверить участников набора реплик и задержку репликацииdb.isMaster()
: проверить, кто является основнымdb.hello()
: проверить, кто является основным
Среди них наиболее полезным является rs.status()
. Он возвращает адекватную информацию о наборе реплик и легко запоминается. Еще одна важная функция — rs.printSecondaryReplicationInfo()
.
Вот пример результата этой функции.
source: ctbx-dbup.cc:27017 syncedTo: Fri Jan 07 2022 05:34:38 GMT+0000 (UTC) 411 secs (0.11 hrs) behind the primary source: ctbx-db-i1.cc:27017 syncedTo: Fri Jan 07 2022 05:41:28 GMT+0000 (UTC) 1 secs (0 hrs) behind the primary source: ctbx-db-i2.cc:27017 syncedTo: Fri Jan 07 2022 05:41:25 GMT+0000 (UTC) 4 secs (0 hrs) behind the primary
Мы видим, что он дает нам отформатированный отчет с информацией о задержке репликации между главным и вторичным узлами.
Как периодически проверять информацию о задержке репликации?
Выполнение функции вручную в клиенте Mongo Shell невозможно. Давайте напишем простую программу Go в следующем разделе.
Программа Go
Структура данных
Теперь давайте сначала определим основные структуры данных для хранения данных.
OpTime
: объект временной метки MongoReplSetMember
: информация о члене узла репликиReplSetGetStatus
: результат функцииrs.status()
GetReplSetStatus
Функция GetReplSetStatus
возвращает структуру ReplSetGetStatus
.
Внутри своей реализации он сначала запускает команду replSetGetStatus
в базе данных администратора, затем разбирает результат в структуру ReplSetGetStatus
и возвращает ее.
PrintSecondaryLags
Учитывая структуру ReplSetGetStatus
, функция PrintSecondaryLags
печатает отставание каждого вторичного члена.
Сначала он выполняет итерацию по массиву элементов структуры ReplSetGetStatus, чтобы найти оптимальное время основного члена. Затем он снова выполняет итерацию по массиву элементов, чтобы вывести задержку каждого вторичного элемента.
Основная функция
Основная функция — точка входа в программу.
- Сначала он создает
mongo.Client
type и подключается к базе данных MongoDB. - Каждые 5 секунд он выполняет функцию
GetReplSetStatus
для получения структурыReplSetGetStatus
. Затем он вызывает функциюPrintSecondaryLags
для вывода отставания каждого вторичного члена. - Наконец, он закрывает соединение с базой данных.
Основная функция также обрабатывает сигнал Ctrl+C. Он закрывает соединение с базой данных перед выходом.
Полный код здесь.
Если вам понравилась эта статья, пожалуйста, хлопните в ладоши, чтобы другие могли ее увидеть. 💚