Как преобразовать набор реплик 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

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

Ответы на вопрос(5)

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

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

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

Решение Вопроса

rs.remove('host:port')), перезапустите его безreplSet параметр и этоСнова автономно.

 Daniel F11 сент. 2018 г., 18:14
Об комментарии, предлагающем удалениеlocal база данных: вы никогда не знаете, какие будущие версии БД будут вставлены в эту БД, и комментарий может быть читаемым спустя годы, когда он действительно имел смысл и был применим, но со временем это может измениться, поэтому удалениеlocal БД может привести к повреждению сервера. Лучше всего сделать резервную копию предложения со ссылкой на документацию, в которой утверждается, что оно «можно сделать это, чтобы заархивироватьцели.
 Furetto03 февр. 2016 г., 09:17
Написать полный документ для преобразования ReplicaSet на один серверtecnicume.
 Sammaye04 июн. 2013 г., 11:32
Если вы неЕсли вы хотите сохранить информацию, вы также можете удалитьlocal децибел
 Rudi Wijaya05 мая 2014 г., 10:14
Не работает: `` `bippo: PRIMARY> rs.remove (»rudi.dev:27017'); {"errmsg ":"исключение: можетнайти себя в новой конфигурации replset ","код" : 13433 "Хорошо" : 0} БИППО: ПЕРВИЧНЫЙ> rs.config () {"_Я бы" : "Биппо ","версия" : 1 "члены» : [{"_Я бы" : 0 "хост ":"rudi.dev:27017"                 }]} `` `

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

   use admin
   db.shutdownServer()

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

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

 nagylzs29 янв. 2019 г., 08:51
AFAIK ваш основной не станет автономным сервером. Он станет основным членом набора реплик, который содержит только один элемент.
 Bhushan Shirsath14 мар. 2016 г., 16:12
это сработало для меня, большое спасибо .......

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

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

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

Чтобы удалить предупреждение, вы можете сделать 2 процедуры: 1) Удаление локальных БД и перезапуск Монго:

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 })

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

 Gianfranco P.28 июн. 2018 г., 16:53
в MongoDB 4.0 кажется, что вы можетеудалитьreplset.* коллекции вlocal дб. Я должен был броситьlocal децибел
 Tristan04 янв. 2017 г., 12:33
Я должен был бежатьrs.initiate() заново создать кластер репликации и сделать узел ПЕРВИЧНЫМ. Спасибо!
 Adam Parkin27 янв. 2017 г., 23:01
not authorized on local to execute command { delete: \"system.replset\", deletes: [ { q: { _id: \"rs0\" }, limit: 0.0 } ], ordered: true } делать удаление. Какую роль необходимо удалить из?system.replset

На машине с Ubuntu

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

use local

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

Ваш ответ на вопрос