Репликация — это процесс синхронизации данных между несколькими серверами. Репликация обеспечивает избыточность и повышает доступность данных благодаря наличию нескольких копий данных на разных серверах баз данных. Репликация защищает базу данных от потери одного сервера. Репликация также позволяет восстанавливаться после сбоя оборудования и перерывов в обслуживании. С дополнительными копиями данных вы можете выделить одну для аварийного восстановления, создания отчетов или резервного копирования.
Почему Репликация?
- Чтобы сохранить ваши данные в безопасности
- Высокая (24 * 7) доступность данных
- Аварийное восстановление
- Нет времени на обслуживание (например, резервное копирование, перестроение индекса, сжатие)
- Масштабирование чтения (дополнительные копии для чтения)
- Набор реплик прозрачен для приложения
Как работает репликация в MongoDB
MongoDB достигает репликации с помощью набора реплик. Набор реплик — это группа экземпляров mongod, которые содержат один и тот же набор данных. В реплике один узел является основным узлом, который получает все операции записи. Все другие экземпляры, такие как вторичные, применяют операции с первичного, чтобы у них был тот же набор данных. Набор реплик может иметь только один основной узел.
-
Набор реплик — это группа из двух или более узлов (обычно требуется минимум 3 узла).
-
В наборе реплик один узел является первичным узлом, а остальные узлы являются вторичными.
-
Все данные реплицируются с первичного на вторичный узел.
-
Во время автоматического восстановления после сбоя или обслуживания выбор устанавливается для основного и новый основной узел выбирается.
-
После восстановления отказавшего узла он снова присоединяется к набору реплик и работает как вторичный узел.
Набор реплик — это группа из двух или более узлов (обычно требуется минимум 3 узла).
В наборе реплик один узел является первичным узлом, а остальные узлы являются вторичными.
Все данные реплицируются с первичного на вторичный узел.
Во время автоматического восстановления после сбоя или обслуживания выбор устанавливается для основного и новый основной узел выбирается.
После восстановления отказавшего узла он снова присоединяется к набору реплик и работает как вторичный узел.
Показана типичная схема репликации MongoDB, в которой клиентское приложение всегда взаимодействует с первичным узлом, а первичный узел затем реплицирует данные на вторичные узлы.
Особенности набора реплик
- Кластер из N узлов
- Любой узел может быть основным
- Все операции записи идут на основной
- Автоматическое переключение при сбое
- Автоматическое восстановление
- Консенсусные выборы первичного
Установите набор реплик
В этом руководстве мы преобразуем автономный экземпляр MongoDB в набор реплик. Чтобы преобразовать в набор реплик, выполните следующие действия:
-
Завершение работы уже запущенного сервера MongoDB.
-
Запустите сервер MongoDB, указав параметр — replSet. Ниже приведен основной синтаксис —replSet —
Завершение работы уже запущенного сервера 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
-
Он запустит экземпляр mongod с именем rs0 на порту 27017.
-
Теперь запустите командную строку и подключитесь к этому экземпляру mongod.
-
В клиенте Mongo введите команду rs.initiate (), чтобы инициировать новый набор реплик.
-
Чтобы проверить конфигурацию набора реплик, введите команду rs.conf () . Чтобы проверить состояние набора реплик, введите команду rs.status () .
Он запустит экземпляр mongod с именем rs0 на порту 27017.
Теперь запустите командную строку и подключитесь к этому экземпляру mongod.
В клиенте Mongo введите команду rs.initiate (), чтобы инициировать новый набор реплик.
Чтобы проверить конфигурацию набора реплик, введите команду rs.conf () . Чтобы проверить состояние набора реплик, введите команду rs.status () .
Добавить участников в набор реплик
Чтобы добавить участников в набор реплик, запустите экземпляры mongod на нескольких компьютерах. Теперь запустите клиент Монго и введите команду rs.add () .
Синтаксис
Основной синтаксис команды rs.add () следующий:
>rs.add(HOST_NAME:PORT)
пример
Предположим, имя вашего экземпляра mongod — mongod1.net, и он работает через порт 27017 . Чтобы добавить этот экземпляр в набор реплик, введите команду rs.add () в клиенте Mongo.
>rs.add("mongod1.net:27017") >
Вы можете добавить экземпляр mongod в набор реплик только тогда, когда вы подключены к первичному узлу. Чтобы проверить, подключены ли вы к основному или нет, введите команду db.isMaster () в клиенте mongo.