当前位置: 首页 > 科技观察

生产型MongoDB分片集群方案

时间:2023-03-17 17:45:32 科技观察

【编者按】MongoDB是IT行业非常流行的非关系型数据库(NoSql)。其灵活的数据存储方式深受当下IT从业者的青睐。MongoDB很好的实现了面向对象的思想(OO思想),MongoDB中的每条记录都是一个Document对象。本文介绍了MongoDB在生产环境中实现分片和集群方案的运行实例。一、Mongodb分片与集群拓扑图二、分片与集群部署一、Mongodb安装分别在以上3台服务器上安装mongodb。mongodb安装方法见安装脚本。2.Mongod创建单分片副本集10.68.4.209①创建数据文件夹和日志文件夹mdkir/data/{master,slave,arbiter}mkdir/data/log/mongodb/{master,slave,arbiter}-p②创建配置文件#master.confdbpath=/data/masterlogpath=/data/log/mongodb/master/mongodb.logpidfilepath=/var/run/mongo_master.pid#directoryperdb=truelogappend=truereplSet=policydbport=10002oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#slave.confdbpath=/data/slavelogpath=/data/log/mongodb/slave/mongodb.logpidfilepath=/var/run/mongo_slave.pid#directoryperdb=truelogappend=truereplSet=policydbport=10001oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#arbiter.confdbpath=/data/arbiterlogpath=/data/log/mongodb/arbiter/mongodb.logpidfilepath=/var/run/mongo_arbiter.pid#directoryperdb=truelogappend=truereplSet=policydbport=10000oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200③启动mongodb/etc/init.d/mongodb_masterstart/etc/init.d/mongodb_slavestart/etc/init.d/mongodb_arbiterstart④配置主、备、仲裁节点主节点:#/usr/local/mongodb/bin/mongo10.68.4.209:10002MongoDBshellversion:2.4.9connectingto:10.68.4.209:10002/test>useadminswitchedtodbadmin>config={_id:"policydb",members:[{_id:0,host:'10.68.4.209:10002',priority:2},{_id:1,host:'10.68.4.209:10001',priority:1},...{_id:2,host:'10.68.4.209:10000',arbiterOnly:true}]};{"_id":"policydb","members":[{"_id":0,"host":"10.68.4.209:10002","priority":2},{"_id":1,"host":"10.68.4.209:10001","priority":1},{"_id":2,"host":"10.68.4.209:10000","arbiterOnly":true}]}rs.initiate(config)#初始化rs.status()#查看集群状态10.68.4.29①创建data文件夹和log文件夹mdkir/data/{master,slave,arbiter}mkdir/data/log/mongodb/{master,slave,arbiter}-p②创建配置文件#master.confdbpath=/data/masterlogpath=/data/log/mongodb/master/mongodb.logpidfilepath=/var/run/mongo_master.pid#directoryperdb=truelogappend=truereplSet=policydb2port=10002oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#slave.confdbpath=/data/slavelogpath=/data/log/mongodb/slave/mongodb.logpidfilepath=/var/run/mongo_slave.pid#directoryperdb=truelogappend=truereplSet=policydb2port=10001oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#arbiter.confdbpath=/data/arbiterlogpath=/data/log/mongodb/arbiter/mongodb.logpidfilepath=/var/run/mongo_arbiter.pid#directoryperdb=truelogappend=truereplSet=policydb2port=10000oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200③启动mongodb/etc/init.d/mongodb_masterstart/etc/init.d/mongodb_slavestart/etc/init.d/mongodb_arbiterstart④配置主、备、中间节点:#/usr/local/mongodb/bin/mongo10.68.4.209:10002MongoDBshellversion:2.4.9connectingto:10.68.4.209:10002/test>useadminswitchedtodbadmin>config={_id:"policydb2",members:[{_id:0,主机:'10.68.4.29:10002',优先级:2},{_id:1,主机:'10.68.4.29:10001',优先级:1},...{_id:2,主机:'10.68.4.209:10000',仲裁rOnly:true}]};{"_id":"policydb","members":[{"_id":0,"host":"10.68.4.29:10002","priority":2},{"_id":1,"host":"10.68.4.29:10001","priority":1},{"_id":2,"host":"10.68.4.29:10000","arbiterOnly":true}]}rs.initiate(config)#初始化rs.status()#查看集群状态10.68.4.30①创建data文件夹和log文件夹mdkir/data/{master,slave,arbiter}mkdir/data/log/mongodb/{master,slave,arbiter}-p②创建配置文件#master.confdbpath=/data/masterlogpath=/data/log/mongodb/master/mongodb.logpidfilepath=/var/run/mongo_master.pid#directoryperdb=truelogappend=truereplSet=policydb3port=10002oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#slave.confdbpath=/data/slavelogpath=/data/log/mongodb/slave/mongodb.logpidfilepath=/var/run/mongo_slave.pid#directoryperdb=truelogappend=truereplSet=policydb3port=10001oplogSize=10000fork=truenoprealloc=trueprofile=1slowms=200#arbiter.confdbpath=/data/arbiterlogpath=/data/log/mongodb/arbiter/mongodb.logpidfilepath=/var/run/mongo_arbiter.pid#directoryperdb=truelogappend=truereplSet=policydb3port=10000oplogSize=10000fork=trueprofile=trueprofile=1slowms=200③启动mongodb/etc/init.d/mongodb_masterstart/etc/init.d/mongodb_slavestart/etc/init.d/mongodb_arbiterstart④配置主、备、仲衣节主节:#/usr/local/mongodb/bin/mongo10.68.4.209:10002MongoDBshellversion:2.4.9connectingto:10.68.4.209:10002/test>useadminswitchedtodbadmin>config={_id:"policydb3",members:[{_id:0,host:'10.68.4.30:10002',优先级:2},{_id:1,host:'10.68.4.30:10001',priority:1},...{_id:2,host:'10.68.4.30:10000',arbiterOnly:true}]};{"_id":"policydb","members":[{"_id":0,"host":"10.68.4.30:10002","priority":2},{"_id":1,"host":“10.68.4.30:10001”,“优先级”:1},{“_id”:2,“主机”:“10。10.68.4.209mkdir/data/config10.68.4.29mkdir/data/config10.68.4.30mkdir/data/config②准备配置服务器的配置文件三台服务器的配置服务器的配置文件一致#config.confdbpath=/data/configlogpath=/data/log/mongodb/config/mongodb.logpidfilepath=/var/run/mongo_config.piddirectoryperdb=truelogappend=trueport=10003fork=trueconfigsvr=true③启动配置服务器/etc/init.d/mongodb_configstart3.mongod创建配置mongos并开启分片模式①创建日志目录mkdir-p/data/log/mongodb/mongos/②准备mongos的配置文件#mongos.conflogpath=/data/log/mongodb/mongos/mongodb.logpidfilepath=/var/run/mongo_mongos.pidlogappend=trueport=10004fork=trueconfigdb=10.68.4.209:10003,10.68.4.29:10003,10.68.4.30:1000③启动mongos/etc/init.d/mongodb_mongosstart④配置分片sh。addShard("policydb/10.68.4.209:10002")sh.addShard("policydb2/10.68.4.29:10002")sh.addShard("policydb3/10.68.4.30:10002")sh.enableSharding("策略ydb")db.runCommand({"shardcollection":"policydb.fullPolicyTextInfo_history","key":{"key":1}})db.printShardingStatus()#查看分片状态sh.status({verbose:true})sh.status()3.快速创建副本集和配置服务脚本图1.图12.图2config.conf配置文件3.图3附mongodb一键安装脚本:http://pan.baidu.com/s/1c0zvP7M附上mongodb副本集和配置服务器一键配置脚本:http://pan.baidu.com/s/1GuQ0A博客来源:http://my.oschina.net/pwd/blog/411439