Home

Tags

Пробуем 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) Подключаемся и настраиваем:
mongo --port 27000

Добавляем шарды:
> 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()