English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MongoDB репликация - это процесс синхронизации данных на нескольких серверах.
Репликация предоставляет резервное копирование данных, хранящее дублированные копии данных на нескольких серверах, что提高了 доступность данных. И может гарантировать безопасность данных.
Репликация также позволяет восстанавливать данные после аппаратных сбоев и сервисных перебоев.
Репликация mongodb требует как минимум двух узлов. Один из них - это узел-мастер, который отвечает за обработку запросов клиентов, а все остальные - это узлы-слуги, которые отвечают за копирование данных с узла-мастера.
Обычные комбинации узлов mongodb: один мастер и один слуга, один мастер и несколько слуг.
Основной узел записывает все операции oplog, узел-слуга периодически опрашивает основной узел для получения этих операций, затем выполняет эти операции на своем дублированном副本е данных, что гарантирует согласованность данных узла-слуги с данными основного узла.
Схема репликации MongoDB выглядит следующим образом:
На схеме структуры, клиент читает данные с основного узла, а при записи данных клиентом в основной узел, Основной узел и узел-слуга обмениваются данными для обеспечения согласованности данных.
В данном руководстве мы используем один и тот же MongoDB для эксперимента с master-сервером и slave-сервером 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.
В клиенте Mongo используйте команду rs.initiate() для запуска нового кластера репликационного набора.
Мы можем использовать rs.conf() для проверки конфигурации кластера репликационного набора
Для проверки состояния кластера репликационного набора используйте команду rs.status()
Для добавления членов к кластеру副本ного набора нам нужно использовать несколько серверов для запуска службы mongo. Войдите в клиент Mongo и используйте метод rs.add() для добавления членов к кластеру.
>rs.add(HOST_NAME:PORT)
Предположим, что вы уже запустили Mongo сервис с именем mongod1.net и портом 27017. В окне команд клиента используйте команду rs.add() для добавления в кластер клонов, команда выглядит следующим образом:
>rs.add("mongod1.net:27017") >
В MongoDB вы можете добавить Mongo сервис в кластер клонов только через мастер-узел. Чтобы определить, является ли текущий запущенный сервис MongoDB мастер-узлом, можно использовать команду db.isMaster().
Клонирование набора MongoDB отличается от традиционного мастер-слейва, где после отказа мастер-сервера все сервисы останавливаются, а в кластере клонов после отказа мастер-сервера клон берет на себя роль мастер-сервера и не происходит отказа.