Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

В MongoDB репликация осуществляется объединением нескольких (в типовой конфигурации - 3) узлов в Replica Set. Replica Set состоит из одного primary узла и нескольких secondary (подробнее https://docs.mongodb.com/v2v4.40/administration/replica-setsset-deployment/). Для упрощения предлагаем схему:

Primary — основной сервер mongoDB.

Secondary — точные копии баз(ы) данных с real-time синхронизацией.

Arbiter — сервер отвечает только за выборы преемника, сам стать преемником он не может, поэтому рекомендуется отдавать под арбитра минимальные ресурсы.

Минимальные характеристики для mongo-db arbiter:

vCore: 1, 64-bit x86 CPUs

vRAM: 2 ГБ

vHDD: 20Гб


Все операции по изменению данных выполняются только на primary. При этом MongoDB автоматически выполняет failover и смену primary на живой узел, если текущий primary выйдет из строя. Но это требует 3+ узлов в replica set.

...

где <replica_set_name> имя replica set, выбирается произвольно, но должно быть одинаково на обоих всех серверахИзменить строку.

Разрешить внешние подключения, прописав в параметре bindIp (bind_ip в старой версии mongo) адрес 0.0.0.0 (0.0.0.0 - разрешает подключения с любых ip адресов)

Блок кода
languagebash
themeRDark
bind_ip = bindIp: 0.0.0.0

Перезапустить MongoDB

...

Блок кода
languagejs
themeRDark
replica_set_name:PRIMARY> confcfg = rs.conf()
replica_set_name:PRIMARY> confcfg.members[<индекс>].host = "<ip_server1>:27017"
replica_set_name:PRIMARY> rs.reconfig(confcfg)

И снова проверить текущую конфигурацию:

...

Параметр "host" должен содержать ip-адрес этого сервера.

Добавить в Replica Set второй узел Secondary (выполнять на первом сервере):

...

Если MongoDB отвечает на эту команду ошибкой, возможно, нет связи со вторым узлом (или там прописан bind_ip = прописан bindIp: 127.0.0.1), или там не настроен блок replication. Правильный ответ должен быть таким.
На втором узле приглашение консоли управления MongoDB должно смениться на:

Блок кода
themeRDark
root@swlc01-server:/# mongo
replica_set_name:SECONDARY>

То же самое выполнить для остальных узлов.Добавить в Replica Set узел Arbiter (выполнять на первом сервере):

Блок кода
languagejs
themeRDark
replica_set_name:PRIMARY> rs.add("<ip_server3>:27017",true)
{ "ok" : 1 } 

Проверить состояние Replica Set можно выполнив в консоли MongoDB команду rs.status()

...