Подтвердить что ты не робот

Как преобразовать реплику MongoDB в автономный сервер

Считаем, что у меня есть 4 набора реплик и конфигурация такова:

{
 "_id": "rs_0",
 "version": 5,
 "members" : [
  {"_id": 1, "host": "127.0.0.1:27001"},
  {"_id": 2, "host": "127.0.0.1:27002"},
  {"_id": 3, "host": "127.0.0.1:27003"},
  {"_id": 4, "host": "127.0.0.1:27004"}
 ]
}

Я могу подключиться ко всем наборам, используя mongo --port <port>

Есть документы для получения информации о Преобразование автономного набора реплик, но может ли кто-нибудь сказать мне, как конвертировать обратно в автономный реплик установить?

4b9b3361

Ответ 1

Просто удалите хост из набора реплик (rs.remove('host:port')), перезапустите его без параметра replSet, и он будет снова автономным.

Ответ 2

Удалите все вторичные хосты из набора реплик (rs.remove('host: port')), перезапустите mongo deamon без параметра replSet (редактирование/etc/mongo.conf), а вторичные хосты снова запускаются в автономном режиме.

Основной хост сложный, потому что вы не можете удалить его из набора реплик с помощью rs.remove. Когда у вас есть только первичный node в наборе реплик, вы должны выйти из оболочки манго и остановить монго. Затем вы редактируете файл /etc/mongo.conf и удаляете параметр replSet и снова запускаете манго. Когда вы запустите mongo, вы уже находитесь в автономном режиме, но оболочка mongo предложит следующее сообщение:

2015-07-31T12: 02: 51.112 + 0100 [initandlisten] ** ПРЕДУПРЕЖДЕНИЕ: mongod запущен без --replSet еще 1 документ присутствует в local.system.replset

чтобы удалить предупреждение, вы можете выполнить 2 процедуры: 1) Разрыв локального db и перезапуск манго:

use local
db.dropDatabase();

/etc/init.d/mongod restart

2) Или, если вы не хотите быть настолько радикальным, вы можете сделать:

use local
db.system.replset.find()

и он выдает сообщение, например:

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }

то вы удалите его, используя:

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })

и это, вероятно, подскажет:

WriteResult({ "nRemoved" : 1 })

Теперь вы можете перезапустить мангу, и предупреждение должно исчезнуть, и вы будете иметь свой манго в автономном режиме без предупреждений

Ответ 3

Документация MongoDB предлагает выполнить следующие действия для обслуживания элемента набора реплик, что переводит элемент набора реплик в автономный режим для дальнейших операций. С небольшими изменениями это может быть сделано автономно:

  1. Если рассматриваемый узел является единственным узлом в сегменте, откачайте фрагменты в другие разделы в соответствии с документацией MongoDB здесь, иначе разделенная база данных будет повреждена, т.е.
    • Убедитесь, что балансировщик включен, подключившись к mongos и запустите sh.startBalancer(timeout, interval)
    • Если дело касается осколка, перейдите в базу данных администратора и db.adminCommand( { removeShard: "mongodb0" } )
    • Проверьте состояние слива, повторив вышеупомянутую команду removeShard, дождитесь завершения слива
  2. Если rs.stepDown(300) узел является основным, выполните rs.stepDown(300)
  3. Остановите узел, запустив db.shutdownServer()
  4. Измените конфигурацию yaml:
    • комментирование replication.replSetName (--replSetName в командной строке)
    • комментирование sharding.clusterRole для сервера шарда или конфигурации (--shardsvc и --configsvr в командной строке)
    • закомментируйте net.port, затем измените его на другой порт (--port в командной строке)
  5. Запустите экземпляр Mongod
  6. Если изменение является постоянным, перейдите к другому экземпляру mongod и запустите rs.remove("host:port")

После этого рассматриваемый узел должен быть запущен в автономном режиме.

Ответ 4

1) Перейдите в оболочку mongo на вторичных серверах.

2) Остановите вторичные серверы, используя следующую команду:

   use admin
   db.shutdownServer()

После выполнения нижеприведенной команды. Ваш основной автоматически станет автономным сервером.

Для получения дополнительной информации, пожалуйста, проверьте ссылку ниже: http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html

Ответ 5

На машине с Ubuntu

  1. Остановите свой сервер Монго
  2. открыть /etc/mongod.conf
  3. Прокомментируйте репликацию и строку replSetName
#replication:
   #replSetName: rs0
  1. Запустите сервер Монго и перейдите в оболочку Монго
  2. удалить локальную базу данных

use local

db.dropDatabase()
  1. Перезапустите Монго