五、集群模式mongos,mongod,configsvr
1.Shard分片-- 第一组分片 192.168.200.226: /data/mongodb/bin/mongod --replSet rep1 --fork --port 11813 --maxConns 65535 --dbpath /data/mongodb/data --directoryperdb --logpath /data/mongodb/log/db.log --logappend --nohttpinterface #启动rep1分片的一个数据节点/data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log #启动路由节点,读取201.226上的配置节点的配置文件,(在配置节点启动后启动)/data/mongodb/bin/mongod --replSet rep1 --fork --port 11814 --dbpath /data/mongodb/arbiter --directoryperdb --logpath /data/mongodb/log/arbiter.log --logappend --nohttpinterface #启动分片的仲裁节点 192.168.201.226: /data/mongodb/bin/mongod --replSet rep1 --fork --port 11813 --maxConns 65535 --dbpath /data/mongodb/data --directoryperdb --logpath /data/mongodb/log/db.log --logappend --nohttpinterface #启动rep1分片的第二个数据节点/data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log #启动第二个路由节点 (在配置节点启动后启动) 2.ConfigServer--- #启动config server 192.168.201.226: /data/mongodb/bin/mongod --configsvr --dbpath /data/mongodb/config --port 11812 --fork --logpath /data/mongodb/log/mc.log #启动配置节点,注意配置节点应该优先启动,不然路由节点读取不到配置节点信息则会启动失败。3.Mongos路由--- #启动mongos,指定config server, chunkSize 256M 192.168.201.226: /data/mongodb/bin/mongos --configdb 192.168.201.226:11812 --port 11811 --fork --chunkSize 256 --logpath /data/mongodb/log/ms.log #启动路由节点由于机器有限,只配置了一个shard分片,该分片里有2个节点,新增加分片只需对应改replSet 名称即可。
4.配置replSet: 连接任一mongod members mongo 192.168.201.226:11813 config = {_id: 'rep1', members: [ {_id: 0, host: '192.168.200.226:11813', priority: 2}, #priority 为定义优先级,默认为1,高优先级会被认为是主节点优先启用。 {_id: 1, host: '192.168.201.226:11813'}, {_id: 2, host: '192.168.200.226:11814', arbiterOnly: true}] } rs.initiate(config); rs.status() 5.连接mongos增加shard 80G mongo 192.168.201.226:11811/admin show dbs use admin db.runCommand({addshard:'rep1/192.168.201.226:11813,192.168.200.226:11813',maxsize:81920}) db.runCommand({listshards:1}) 6.连接mongos增加创建test库和c1集合,并测试 mongo 192.168.201.226:11811/admin db.runCommand({enablesharding:'test'}) printShardingStatus() db.runCommand({shardcollection:'test.auto_increment_id', key:{_id:1}, unique : true}) db.runCommand({shardcollection:'test.c1', key:{_id:1}, unique : true}) for (var i = 1; i <= 100; i++)db.c1.save({id:i,value1:"1234567890",value2:"1234567890",value3:"1234567890",value4:"1234567890"}) db.c1.stats() db.createCollection("cap_coll", {capped:true, size:100000, max:100}); db.mycoll.validate(); 7.检查: db.printCollectionStats() 8.管理: mongo 127.0.0.1:11811show dbsuse adminshow collectionsdb.serverStatus()db.shutdownServer()exit 9.索引: db.product_data.ensureIndex({data_id: 1}, {unique: true,dropDups: true}); #创建索引 db.product_data.dropIndexes(); #删除索引 至此,mongodb的分布式架构就架起来了,并且通过测试和log的分析,可看服务是否正常,下面就需要php客户端的支持,和程序的运行,之后加到监控里,就可以在线上部署使用了。