Я видел, что для распределения данных я могу выбирать между ReplicaSet или Sharding.
Использование кода mongodb с этими параметрами --shardsvr --replSet
.
mongod --shardsvr --port 27021 --replSet rs1 --dbpath C:\data\data5 --bind_ip localhost
Что я делаю, так это создаю осколочный сервер, который также является набором реплик, или я просто делаю осколок? И если я не делаю и то, и другое, что я должен написать?
Редактировать
mongod --shardsvr --port 27020 --replSet rs1 --dbpath C:\data\data4 --bind_ip localhost
mongod --shardsvr --port 27021 --replSet rs1 --dbpath C:\data\data5 --bind_ip localhost
mongod --shardsvr --port 27022 --replSet rs1 --dbpath C:\data\data6 --bind_ip localhost
mongos --port 40000 --configdb rs0/localhost:27017
mongo --port 40000
rs.initiate( { _id : "rs1", members: [ { _id: 0, host: "localhost:27020" }, { _id: 1, host: "localhost:27021" }, { _id: 2, host: "localhost:27022" } ] })
sh.addShard( "rs1/localhost:27020,localhost:27021,localhost:27022")
sh.enableSharding("db")
sh.shardCollection("db.collection", { "_id" : 1 } )
Когда я делаю такой код, я получаю коллекцию, разделенную на 3 «сервера», которые также шардируют и repliceSet? А с mongos на порту 40 000 я могу взаимодействовать и делать запросы?
Осколок также является набором реплик.
Набор реплик и сегментированный кластер имеют разные цели. Каждый сегмент в сегментированном кластере должен быть набором реплик. См. Sharded Cluster.
Итак, что я здесь делаю, так это делаю 3 осколка mongod, которые ТАКЖЕ являются набором реплик. я прав? Твою ссылку я читал несколько раз, но не могу понять правильно
@Minsky, конечно, вы можете развернуть набор реплик с одним участником. Это не рекомендуемый дизайн для производства, но в целом он работает нормально. Сервер конфигурации также должен быть набором реплик, отдельно это невозможно. Но никто не заставляет вас создавать набор реплик с более чем двумя или более узлами.
@Minsky, ты уверен в автономной конфигурации? В примечании к выпуску MongoDB 3.4 говорится: чтобы обновить сегментированный кластер до версии 3.4, серверы конфигурации должны работать как набор реплик.
@WernfriedDomscheit приятно знать. Я не был уверен, но мне кажется, что я построил его для развлечения несколько месяцев назад, и он действительно работал. Честно говоря, в любом случае нет особого смысла иметь наборы реплик и отдельную конфигурацию!
@Minsky, я думаю, что документация не на 100% ясна, когда в ней говорится, что «серверы конфигурации для сегментированных кластеров могут быть развернуты как набор реплик», я только что проверил это. На самом деле, вы можете настроить и запустить автономный сервер конфигурации, однако вы потерпите неудачу при попытке настроить маршрутизатор mongos с помощью: BadValue: configdb supports only replica set connection string
Конечно, несмотря на то, что он работает, набор реплик с одним участником не имеет особого смысла.
Вы создали один сегмент, который представляет собой набор реплик из трех участников, и один сервер конфигурации в виде наборов реплик с одним участником. Каждый шард и каждый сервер конфигурации должны быть набором реплик.
Если вы хотите получить несколько осколков, вы должны использовать другое имя для --replSet
, например. рс1, рс2, рс3.
В производственной среде не следует создавать наборы реплик с одним членом, если вас не волнует доступность. Обычно вы создаете еще 3 узла сегмента, после чего каждый сегмент также реплицируется.
Возможно, следуйте этому руководству Разверните сегментированный кластер
Какая польза от сегмента в конфигурации с 1 повторением? Там так шардинг возможен там. Вам нужен хотя бы один узел из набора реплик. Это была моя точка зрения...
Наборы реплик и шардинг служат разным целям:
Когда вы настраиваете сегментированный кластер, каждый сегмент может (теоретически) поддерживаться одним узлом или набором реплик. В настоящее время MongoDB требует, чтобы осколки поддерживались наборами реплик, в более старых версиях также разрешались отдельные узлы.
Поэтому:
хорошо спасибо! Я собираюсь отредактировать свой вопрос, указав лучший код, чтобы вы могли сказать мне, работает ли он? пожалуйста