Репликация в MongoDB (набор реплик)
Репликация MongoDB — это процесс синхронизации данных между несколькими серверами.
Репликация обеспечивает избыточное резервное копирование данных и хранит копии данных на нескольких серверах, повышая доступность данных и обеспечивая безопасность данных.
Репликация также позволяет восстанавливать данные после аппаратных сбоев и перерывов в обслуживании.
Что такое репликация?
- Обеспечение безопасности данных
- Высокая доступность данных (24*7)
- Аварийное восстановление
- Отсутствие простоев при обслуживании (например, резервное копирование, перестроение индексов, компактификация)
- Распределённое чтение данных
Принцип репликации MongoDB
Репликация MongoDB требует как минимум двух узлов. Один из них — первичный узел, отвечающий за обработку клиентских запросов, а остальные — вторичные узлы, отвечающие за репликацию данных на первичном узле.
Распространённые конфигурации узлов в MongoDB: один первичный и один вторичный, один первичный и несколько вторичных.
Первичный узел записывает все операции, выполняемые на нём, в oplog. Вторичные узлы периодически опрашивают первичный узел, чтобы получить эти операции, затем применяют их к своим копиям данных, тем самым обеспечивая согласованность данных вторичных узлов с первичным узлом.
Схема структуры репликации MongoDB выглядит следующим образом:
На приведённой выше схеме структуры клиенты читают данные с первичного узла. Когда клиенты записывают данные на первичный узел, первичный узел взаимодействует с вторичными узлами, чтобы обеспечить согласованность данных.
Особенности набора реплик:
- Кластер из N узлов
- Любой узел может выступать в роли первичного узла
- Все операции записи выполняются на первичном узле
- Автоматическое переключение при сбое
- Автоматическое восстановление
Настройка набора реплик MongoDB
В этом руководстве мы используем тот же MongoDB для выполнения эксперимента с первичным и вторичным узлами MongoDB. Шаги следующие:
1. Остановите работающий сервер MongoDB.
Теперь мы запускаем MongoDB, указывая параметр --replSet. Базовый синтаксис --replSet выглядит следующим образом:
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Пример
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
В приведенном выше примере запускается экземпляр MongoDB с именем rs0 и номером порта 27017.
После запуска откройте командную строку и подключитесь к службе MongoDB.
В клиенте MongoDB используйте команду rs.initiate() для запуска нового набора реплик.
Мы можем использовать rs.conf() для просмотра конфигурации набора реплик.
Используйте команду rs.status() для просмотра состояния набора реплик.
Добавление членов в набор реплик
Чтобы добавить членов в набор реплик, нам нужно использовать несколько серверов для запуска службы MongoDB. Войдите в клиент MongoDB и используйте метод rs.add() для добавления членов в набор реплик.
Синтаксис
Базовый синтаксис команды rs.add() выглядит следующим образом:>rs.add(HOST_NAME:PORT)
Пример
Предположим, вы запустили службу MongoDB с именем mongod1.net и номером порта 27017. Используйте команду rs.add() в окне команд клиента, чтобы добавить её в набор реплик, как показано ниже:
>rs.add("mongod1.net:27017")
>
В MongoDB добавить службу MongoDB в набор реплик можно только через первичный узел. Вы можете использовать команду db.isMaster(), чтобы определить, является ли текущая запущенная служба MongoDB первичным узлом.
Набор реплик MongoDB отличается от обычной схемы первичный-вторичный. При схеме первичный-вторичный все службы останавливаются, когда первичный хост выходит из строя. В наборе реплик, когда первичный хост выходит из строя, вторичный узел займёт роль первичного узла, поэтому простоев не будет.
Другие расширения