Проверьте конфигурацию установки mongodb
Я настроил mongodb для кластерной среды. Мой конфиг-сервер и маршрутизатор работают на одной машине, тогда как шардинг работает на трех разных машинах. Я хочу знать, есть ли какая-либо доступная команда, которую я могу запустить на терминале (на котором запущен configsvr и маршрутизатор), и он будет отображать все имя маршрутизатора, configserver (связанный с ним), другие защищенные базы данных (связанные с ним).
Чтобы упростить это больше.
Предположим, я запускаю mycommand / кусок кода, он отображается.
router1---> configserver1----> Shardeddb1
----> Shardeddb2
-----> shardeddb3
Модификация, чтобы сделать его более понятным.
Мой router1 и configserver1 работают на одной машине (скажем, ip 19.0.0.123), Shardeddb1(скажем, ip 19.0.0.124),Shardeddb2(скажем, ip 19.0.0.125),Shardeddb3(скажем, ip 19.0.0.126).
Я хочу сделать Shardeddb1 в качестве основного и (Shardeddb2,Shardeddb3) в качестве дополнительного. Если я запускаю sh.status(); он показывает мне детали, но не о том, какая база данных принадлежит какой машине. Так есть ли сценарий, который может показать мне больше деталей?
sharding version: {
"_id" : 1,
"version" : 4,
"minCompatibleVersion" : 4,
"currentVersion" : 5,
"clusterId" : ObjectId("545b632e9be3f019d6ef788f")
}
shards:
{ "_id" : "ps1", "host" : "ps1/19.0.0.123:27017","draining" : true }
{ "_id" : "ps2", "host" : "ps2/19.0.0.124:27017" }
{ "_id" : "shard0000", "host" : "19.0.0.125:27017" }
{ "_id" : "shard0001", "host" : "19.0.0.126:27017" }
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : true, "primary" : "shard0000" }
{ "_id" : "demo", "partitioned" : true, "primary" : "shard0000" }
{ "_id" : "db", "partitioned" : false, "primary" : "ps1" }
{ "_id" : "mongotestDB", "partitioned" : true, "primary" : "ps1" }
mongotestDB.logcoll
shard key: { "id" : 1 }
chunks:
shard0000 4
shard0001 9
ps2 7
ps1 5
too many chunks to print, use verbose if you want to force print
1 ответ
Поскольку ваша диаграмма показывает иначе:
- Вы можете иметь ровно 1 или 3 сервера конфигурации.
- Вы всегда должны иметь свой
mongos
экземпляры имеют точно такую же строку для параметра configdb. И эта строка должна содержать все серверы конфигурации в одном порядке. В противном случае вы рискуете испортить метаданные. - Все configservers и mongos должны иметь возможность подключаться ко всем узлам кластера и быть подключенными к ним.
- Самый простой способ получить обзор вашего кластера - это бесплатный мониторинг службы управления MongoDB.
- Бег
mongos'
и configservers на той же машине возможно - пока вы следите за нагрузкой. Если что-то становится не так, и у серверов конфигурации есть задержки в обновлении метаданных, потому чтоmongos
потреблять все IO, вы можете ухудшить вещи. Если разбиение на фрагменты задерживается (и они, скорее всего, находятся под высокой нагрузкой), это может привести к JumboChunks, которые нужно разделить вручную и - до тех пор, пока это не будет сделано - не могут быть перенесены. Поэтому очень плохая идея - запускать экземпляры mongos на серверах конфигурации, imvho. Гораздо лучшим решением является запуск экземпляров mongos на серверах приложений, по одному на каждом.