Пробуем MongoDB Sharding на одном хосте
2014-01-04
mongodb
sharding
Для того чтобы пощупать и поиграться с MongoDB Sharding, можно развернуть его на одной машине. Ниже пример настройки конфигурации и добавление шард в пределах одной машины.
1) Создаем папки:
mkdir /tmp/sh
cd /tmp/sh
MPATH=`pwd`
для конфигурацийmkdir $MPATH/n2 $MPATH/n3 $MPATH/n4
для БД (шард)mkdir $MPATH/b2 $MPATH/b3 $MPATH/b4
2) Запускаем конфиг-сервера
mongod --configsvr --dbpath $MPATH/n2 --port 27019
mongod --configsvr --dbpath $MPATH/n3 --port 37019
mongod --configsvr --dbpath $MPATH/n4 --port 47019
3) Запускаем шард-инстанс (для каждого сервера, где есть клиент, желательно сделать свой)
mongos --configdb localhost:27019,localhost:37019,localhost:47019 --port 27000
"Каркас" готов, далее будем добавлять шарды (сколько нужно)
4) Запускаем шарды, --smallfiles только для теста, что-б не использовалось много места
mongod --dbpath $MPATH/b2 --port 27010 --smallfiles
mongod --dbpath $MPATH/b3 --port 37010 --smallfiles
mongod --dbpath $MPATH/b4 --port 47010 --smallfiles
5) Подключаемся и настраиваем:
Добавляем шарды:
> sh.addShard('localhost:27010')
> sh.addShard('localhost:37010')
> sh.addShard('localhost:47010')
Включаем шардинг для базы "one"
> sh.enableSharding('one')
Делаем шард-коллекцию, с индексом по полю "number"
> use one
> db.user.ensureIndex({ number: 1 })
> sh.shardCollection('one.user', { number: 1 })
Тестируем, добавляем 500К элементов
> for(i=0;i<500000;i++) { db.user.insert({ number:i }) }
Смотрим распределение по шардам и чанкам
> sh.status()