mongodb sharding搭建过程

搭建mongodb sharding过程如下,其实手册都有,不过还是记录一下。

概述

分为三个步骤

  • 搭建configdb,并启动
  • 搭建sharding,并启动
  • 启动mongos,开启sharding
    其实configdb和sharding都是mongod进程,使用mongos来操作sharding,这样applycation不用关心数据如何存储。
    测试目录如下:

    《mongodb sharding搭建过程》 屏幕快照 2016-01-12 下午1.51.13.png

    正式环境中,注意如下变化

  • configdb应该搭建为replyset(3.2新增)
  • configdb的应该处于不同的机器
  • sharding最好处于不同的机器

1. 搭建configdb

以configdb1为例
<pre>
mkdir configdb1
cd configdb1
touch mongod.conf
mkdir data
mkdir log
</pre>
其中,mongod.conf的内容如下:
<pre>
systemLog:
destination: file
path: /Users/mohe/work/mongodb/shards/configdb1/log/mongo.log
logAppend: true
timeStampFormat: iso8601-local
storage:
dbPath: /Users/mohe/work/mongodb/shards/configdb1/data
directoryPerDB: true
syncPeriodSecs: 30
engine: wiredTiger
journal:
enabled: true

net:
bindIp: 127.0.0.1
port: 37001

processManagement:
fork: true

sharding:
clusterRole: configsvr
</pre>
启动configdb1即可
<pre>
mongd –config mongod.conf
</pre>
类似启动configdb2,configdb3

搭建sharding

以sharing1为例
<pre>
mkdir shards1
cd shards1
touch mongod.conf
mkdir data
mkdir log
</pre>
其中,mongod.conf的内容如下
<pre>
systemLog:
destination: file
path: /Users/mohe/work/mongodb/shards/shards1/log/mongo.log
logAppend: true
timeStampFormat: iso8601-local
storage:
dbPath: /Users/mohe/work/mongodb/shards/shards1/data
directoryPerDB: true
syncPeriodSecs: 30
engine: wiredTiger
journal:
enabled: true
net:
bindIp: 127.0.0.1
port: 37011
processManagement:
fork: true
</pre>
启动sharding1
<pre>
mongd –config mongod.conf
</pre>
类似,启动sharding2,sharding3

启动mongos,开启sharding

<pre>
mkdir mongos
cd mongos
touch mongos.conf
mkdir log
</pre>
注意,mongos没有data
mongos文件内容如下
<pre>
systemLog:
destination: file
path: /Users/mohe/work/mongodb/shards/mongos/log/mongo.log
logAppend: true
timeStampFormat: iso8601-local

net:
bindIp: 127.0.0.1
port: 37000

processManagement:
fork: true

sharding:
configDB: “127.0.0.1:37001,127.0.0.1:37002,127.0.0.1:37003”
</pre>

启动mongos
<pre>
mongos -f mongos.conf
</pre>
连上mongos
<pre>
mongo 127.0.0.1:37000
</pre>

加入sharding
在mongo终端里面执行
<pre>
sh.addShard(“127.0.0.1:37011”); ## sharding1加入
sh.addShard(“127.0.0.1:37012”); ## sharding2加入
sh.addShard(“127.0.0.1:37013”); ## sharding3加入
</pre>

enable想要sharding的数据库和集合
<pre>
sh.enableSharding(“be3”);
sh.shardCollection(“be3.log”,{ “sid”: “hashed”});
</pre>
shardCollection的这里如果选择了hashed的索引,mongos会自动在各个sharding对应的字段建立一个hash_index索引。

测试

在mongos终端里面执行
<pre>
for(var i=1; i<10000; i++){var s_value = (i % 10) + 1;
db.log.insert({uid:i,sid:s_value});}
</pre>
然后连上各个mongod进程,查看是sharding分布
各个执行
<pre>
db.log.count();
</pre>
结果如下:
sharding001: 2000
sharding002: 3000
sharding002: 4999

    原文作者:randyjia
    原文地址: https://www.jianshu.com/p/0d386a6dab64
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞