搭建mongodb集群(副本集+分片)
完整的搭建mongodb集群(副本集+分片)的例子。。。
准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0
副本集及分片策略确定如下:
- 将创建3个副本集,命名为shard1,shard2,shard3;
- 以上3个副本集作为3个分片;
- 每个副本集包含2个副本(主、辅);
- 副本分开存储,即shard1存在bluejoe1和bluejoe2上各一份。。。以此类推
- 将创建3个配置库实例,一台机器一个
- bluejoe0上配置一个mongos(mongos一般可以配置在应用端)
- 在bluejoe1上下载mongdb安装包;
- 解压至/usr/local/mongdb(注意改名);
- 创建data/node1和data/node2目录,启动2个mongod实例,注意它们分别是shard1-1和shard3-2:
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/node1 --port 10001 --replSet shard1/bluejoe2:10002 --logpath=/usr/local/mongodb/log/node1.log /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/node2 --port 10002 --replSet shard3/bluejoe3:10001 --logpath=/usr/local/mongodb/log/node2.log
- 初始化副本
db.runCommand( { "replSetInitiate": { "_id":"shard1", "members": [ { "_id":1, "host":"bluejoe1:10001" }, { "_id":2, "host":"bluejoe2:10002" } ] } })
- 创建data/configdb,启动配置库实例:
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/configdb --port 20000 --logpath=/usr/local/mongodb/log/configdb.log
- 使用scp命令,将mongodb目录复制至bluejoe2和bluejoe3机器,并按照第3、4步启动每台机器上的3个实例,注意副本也要初始化;
- 到现在为止应该有9个mongd实例,其中3个为配置库实例,剩下的属于3个副本集;
- 接下来管理分片,在bluejoe0上启动mongs:
/usr/local/mongodb/bin/mongos --port 30000 --configdb bluejoe1:20000,bluejoe2:20000,bluejoe3:20000
- 连接上mongos,配置分片信息:
mongos> use admin switched to db admin db.runCommand({"addShard":"shard1/bluejoe1:10001"}) db.runCommand({"addShard":"shard2/bluejoe2:10001"}) db.runCommand({"addShard":"shard3/bluejoe3:10001"})
- 对库开启分片功能:
mongos> use admin switched to db admin mongos> db.runCommand({"enablesharding":"test"}) { "ok" : 1 } mongos> db.runCommand({"shardcollection":"test.person","key":{"name":1}}) { "collectionsharded" : "test.person", "ok" : 1 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。