標籤:
一、環境
$ cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) $ uname -aLinux zhaopin-2-201 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux$ mongo --versionMongoDB shell version: 3.0.6
二、配置Shard Server 1.建立目錄
$ sudo mkdir -p /data/mongodb/{data/{sh0,sh1},backup/{sh0,sh1},log/{sh0,sh1},conf/{sh0,sh1}}
2.準備設定檔
第一個分區:
$ sudo vim /data/mongodb/conf/sh0/mongodb.conf# baseport = 27010maxConns = 800 filePermissions = 0700fork = truenoauth = truedirectoryperdb = truedbpath = /data/mongodb/data/sh0pidfilepath = /data/mongodb/data/sh0/mongodb.pidoplogSize = 10journal = true# securitynohttpinterface = truerest = false# log logpath = /data/mongodb/log/sh0/mongodb.loglogRotate = renamelogappend = trueslowms = 50replSet = sh0 shardsvr = true
第二個分區:
$ sudo vim /data/mongodb/conf/sh1/mongodb.conf# baseport = 27011maxConns = 800 filePermissions = 0700fork = truenoauth = truedirectoryperdb = truedbpath = /data/mongodb/data/sh1pidfilepath = /data/mongodb/data/sh1/mongodb.pidoplogSize = 10journal = true# securitynohttpinterface = truerest = false# loglogpath = /data/mongodb/log/sh1/mongodb.loglogRotate = renamelogappend = trueslowms = 50replSet = sh1shardsvr = true
3.啟動Shard Server
$ sudo /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh0/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 41492child process started successfully, parent exiting$ sudo /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh1/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 41509child process started successfully, parent exiting$ ps aux | grep mongo | grep -v greproot 41492 0.5 0.0 518016 54604 ? Sl 10:09 0:00 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh0/mongodb.confroot 41509 0.5 0.0 516988 51824 ? Sl 10:09 0:00 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh1/mongodb.conf$ mongo --port 27010MongoDB shell version: 3.0.6connecting to: 127.0.0.1:27010/test>bye$ mongo --port 27011MongoDB shell version: 3.0.6connecting to: 127.0.0.1:27011/test>bye
三、配置Config Server 1.建立目錄
$ sudo mkdir -p /data/mongodb/{data/{cf0,cf1,cf2},backup/{cf0,cf1,cf2},log/{cf0,cf1,cf2},conf/{cf0,cf1,cf2}}
2.準備設定檔
第一個設定管理員:
$ sudo vim /data/mongodb/conf/cf0/config.conf# baseport = 27000maxConns = 800filePermissions = 0700fork = truenoauth = truedirectoryperdb = truedbpath = /data/mongodb/data/cf0pidfilepath = /data/mongodb/data/cf0/config.pidoplogSize = 10journal = true# securitynohttpinterface = truerest = false# loglogpath = /data/mongodb/log/cf0/config.loglogRotate = renamelogappend = trueslowms = 50configsvr = true
第二個設定管理員:
$ sudo vim /data/mongodb/conf/cf1/config.conf# baseport = 27001maxConns = 800filePermissions = 0700fork = truenoauth = truedirectoryperdb = truedbpath = /data/mongodb/data/cf1pidfilepath = /data/mongodb/data/cf1/config.pidoplogSize = 10journal = true# securitynohttpinterface = truerest = false# loglogpath = /data/mongodb/log/cf1/config.loglogRotate = renamelogappend = trueslowms = 50configsvr = true
第三個設定管理員:
$ sudo vim /data/mongodb/conf/cf2/config.conf# baseport = 27002maxConns = 800filePermissions = 0700fork = truenoauth = truedirectoryperdb = truedbpath = /data/mongodb/data/cf2pidfilepath = /data/mongodb/data/cf2/config.pidoplogSize = 10journal = true# securitynohttpinterface = truerest = false# loglogpath = /data/mongodb/log/cf2/config.loglogRotate = renamelogappend = trueslowms = 50configsvr = true
3.啟動
$ sudo /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf0/config.confabout to fork child process, waiting until server is ready for connections.forked process: 41759child process started successfully, parent exiting$ sudo /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf1/config.confabout to fork child process, waiting until server is ready for connections.forked process: 41774child process started successfully, parent exiting$ sudo /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf2/config.confabout to fork child process, waiting until server is ready for connections.forked process: 42170child process started successfully, parent exiting$ ps aux | grep mongo | grep -v greproot 41492 0.3 0.0 518016 54728 ? Sl 10:09 0:06 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh0/mongodb.confroot 41509 0.3 0.0 518016 54760 ? Sl 10:09 0:06 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh1/mongodb.confroot 41855 0.4 0.0 467828 51684 ? Sl 10:25 0:03 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf0/config.confroot 41870 0.4 0.0 467828 52312 ? Sl 10:25 0:03 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf1/config.confroot 42170 0.9 0.0 467824 52392 ? Sl 10:37 0:00 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf2/config.conf
四、配置Query Routers 1.建立目錄
$ sudo mkdir -p /data/mongodb/{data/{ms0,ms1},backup/{ms0,ms1},log/{ms0,ms1},conf/{ms0,ms1}}
2.準備設定檔
第一個設定管理員:
$ sudo vim /data/mongodb/conf/ms0/mongos.conf# baseport = 30000maxConns = 800filePermissions = 0700fork = truepidfilepath = /data/mongodb/data/ms0/mongos.pid# loglogpath = /data/mongodb/log/ms0/mongos.loglogRotate = renamelogappend = trueconfigdb = 172.30.2.201:27000,172.30.2.201:27001,172.30.2.201:27002
第二個設定管理員:
$ sudo vim /data/mongodb/conf/ms1/mongos.conf# baseport = 30000maxConns = 800 filePermissions = 0700fork = truepidfilepath = /data/mongodb/data/ms1/mongos.pid# log logpath = /data/mongodb/log/ms1/mongos.loglogRotate = renamelogappend = trueconfigdb = 172.30.2.201:27000,172.30.2.201:27001,172.30.2.201:27002
3.啟動
$ sudo /opt/mongodb/bin/mongos --config /data/mongodb/conf/ms0/mongos.confabout to fork child process, waiting until server is ready for connections.forked process: 42233child process started successfully, parent exiting$ sudo /opt/mongodb/bin/mongos --config /data/mongodb/conf/ms1/mongos.confabout to fork child process, waiting until server is ready for connections.forked process: 42286child process started successfully, parent exiting$ ps aux | grep mongo | grep -v greproot 41492 0.3 0.0 518016 54728 ? Sl 10:09 0:06 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh0/mongodb.confroot 41509 0.3 0.0 518016 54760 ? Sl 10:09 0:07 /opt/mongodb/bin/mongod --config /data/mongodb/conf/sh1/mongodb.confroot 41855 0.4 0.0 546724 37812 ? Sl 10:25 0:03 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf0/config.confroot 41870 0.4 0.0 546724 38188 ? Sl 10:25 0:03 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf1/config.confroot 42170 0.6 0.0 546720 41960 ? Sl 10:37 0:00 /opt/mongodb/bin/mongod --config /data/mongodb/conf/cf2/config.confroot 42233 0.5 0.0 233536 10188 ? Sl 10:38 0:00 /opt/mongodb/bin/mongos --config /data/mongodb/conf/ms0/mongos.confroot 42286 0.4 0.0 241728 9056 ? Sl 10:38 0:00 /opt/mongodb/bin/mongos --config /data/mongodb/conf/ms1/mongos.conf
五、初始化單節點複本集
配置複本集的好處是為了高可用,配置單節點是我自己為了節省時間,後續添加節點和複本集的操作一樣,分區的配置不需要修改
分區一:
$ mongo --port 27010MongoDB shell version: 3.0.6connecting to: 127.0.0.1:27010/test> use adminswitched to db admin> cfg={_id:"sh0", members:[ {_id:0,host:"172.30.2.201:27010"}] }{ "_id" : "sh0", "members" : [ { "_id" : 0, "host" : "172.30.2.201:27010" } ]}> rs.initiate( cfg );{ "ok" : 1 }sh0:OTHER> rs.status();{ "set" : "sh0", "date" : ISODate("2015-10-09T02:45:39.178Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "172.30.2.201:27010", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 2197, "optime" : Timestamp(1444358731, 1), "optimeDate" : ISODate("2015-10-09T02:45:31Z"), "electionTime" : Timestamp(1444358731, 2), "electionDate" : ISODate("2015-10-09T02:45:31Z"), "configVersion" : 1, "self" : true } ], "ok" : 1}sh0:PRIMARY>bye
分區二:
$ mongo --port 27011MongoDB shell version: 3.0.6connecting to: 127.0.0.1:27011/test> cfg={_id:"sh1", members:[ {_id:0,host:"172.30.2.201:27011"}] }{ "_id" : "sh1", "members" : [ { "_id" : 0, "host" : "172.30.2.201:27011" } ]}> rs.initiate( cfg );{ "ok" : 1 }sh1:OTHER> rs.status();{ "set" : "sh1", "date" : ISODate("2015-10-09T02:46:32.961Z"), "myState" : 1, "members" : [ { "_id" : 0, "name" : "172.30.2.201:27011", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 2244, "optime" : Timestamp(1444358790, 1), "optimeDate" : ISODate("2015-10-09T02:46:30Z"), "electionTime" : Timestamp(1444358790, 2), "electionDate" : ISODate("2015-10-09T02:46:30Z"), "configVersion" : 1, "self" : true } ], "ok" : 1}sh1:PRIMARY>bye
六、配置分區
$ mongo --port 30000MongoDB shell version: 3.0.6connecting to: 127.0.0.1:30000/testmongos> use admin;switched to db adminmongos> sh.addShard("sh0/172.30.2.201:27010");{ "shardAdded" : "sh0", "ok" : 1 }mongos> sh.addShard("sh1/172.30.2.201:27011");{ "shardAdded" : "sh1", "ok" : 1 }mongos> use mydb;switched to db mydbmongos> db.createCollection("test");{ "ok" : 1, "$gleStats" : { "lastOpTime" : Timestamp(1444358911, 1), "electionId" : ObjectId("56172a4bc03d9b1667f8e928") }}mongos> sh.enableSharding("mydb");{ "ok" : 1 }mongos> sh.shardCollection("mydb.test", {"_id":1});{ "collectionsharded" : "mydb.test", "ok" : 1 }mongos> sh.status();--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("561728b4030ea038bcb57fa0")} shards: { "_id" : "sh0", "host" : "sh0/172.30.2.201:27010" } { "_id" : "sh1", "host" : "sh1/172.30.2.201:27011" } balancer: Currently enabled: yes Currently running: no Failed balancer rounds in last 5 attempts: 0 Migration Results for the last 24 hours: No recent migrations databases: { "_id" : "admin", "partitioned" : false, "primary" : "config" } { "_id" : "mydb", "partitioned" : true, "primary" : "sh0" } mydb.test shard key: { "_id" : 1 } chunks: sh0 1 { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : sh0 Timestamp(1, 0)
可見分區已經配置完成了
MongoDB分區搭建