配置准备
三台机器:
A(193.168.10.101) B(193.168.10.102) C(193.168.10.103)
MongoDB 安装目录:/usr/local/mongodb
MongoDB 数据库目录:/usr/local/mongodb/data MongoDB 日志目录:/usr/local/mongodb/log
MongoDB 配置文件:/usr/local/mongodb/conf/mongodb.conf
每台机器上都安装好mongodb
配置过程
启动mongo实例
三台机器上分别启动
./mongod --logpath /usr/local/mongodb/logs/a/r0.log --logappend --dbpath /usr/local/mongodb/data/a/r0 --journalCommitInterval --port --shardsvr --replSet setA --rest --oplogSize --fork ./mongod --logpath /usr/local/mongodb/logs/b/r0.log --logappend --dbpath /usr/local/mongodb/data/b/r0 --journalCommitInterval --port --shardsvr --replSet setB --rest --oplogSize --fork ./mongod --logpath /usr/local/mongodb/logs/c/r0.log --logappend --dbpath /usr/local/mongodb/data/c/r0 --journalCommitInterval --port --shardsvr --replSet setC --rest --oplogSize --fork
./mongod --configsvr --logpath /usr/local/mongodb/logs/configServer/r0.log --logappend --dbpath /usr/local/mongodb/data/configServer/r0 --port --fork
//三台机器执行完上面的以后 再执行下面的命令
./mongos --configdb 193.168.10.101:,193.168.10.102:,193.168.10.103: --logpath /usr/local/mongodb/logs/serverlogs/mongos.log --logappend --port --fork
设置副本集
./mongo 193.168.10.101:
rs.initiate({_id : "setA", members : [{_id : , host : "193.168.10.101:10000"}]})
rs.add("193.168.10.102:10000")
rs.add("193.168.10.103:10000") ./mongo 193.168.10.101:
rs.initiate({_id : "setB", members : [{_id : , host : "193.168.10.101:20000"}]})
rs.add("193.168.10.102:20000")
rs.add("193.168.10.103:20000") ./mongo 193.168.10.101:
rs.initiate({_id : "setC", members : [{_id : , host : "193.168.10.101:30000"}]})
rs.add("193.168.10.102:30000")
rs.add("193.168.10.103:30000")
可以自己设置哪个是主节点
cfg=rs.status() //查看节点顺序
...... cfg.members[].priority =
cfg.members[].priority =
cfg.members[].priority = //设置为2的为主节点
rs.reconfig(cfg)
分别进入两个从节点进行配置(setA setB setC每个的从节点都需要)
db.getMongo().setSlaveOk() //设置从节点为只读
设置分片
//设置分片 从50000路由端口进入
./mongo 193.168.10.101: sh.addShard("setA/193.168.10.101:10000,193.168.10.102:10000,193.168.10.103:10000"); sh.addShard("setB/193.168.10.101:20000,193.168.10.102:20000,193.168.10.103:20000"); sh.addShard("setC/193.168.10.101:30000,193.168.10.102:30000,193.168.10.103:30000");
验证
printShardingStatus()
use testdb
db.createCollection('test01') //创建一个表
use admin
db.runCommand({enablesharding:'test01'}) //设置数据库可以分片
db.runCommand({shardcollection:'testdb.test01',key:{c_id:}})