#!/bin/bash # use this to initiate: rs.initiate({_id:"shardsvr1",members:[{_id:0,host:"192.168.12.161:27018"}]}) /home/cloud/platform/mongodb-3.4.5/bin/mongod --config /home/cloud/platform/mongodb-3.4.5/shardserver.conf
b)configsvr
#!/bin/bash #use this to initiate: rs.initiate({_id:"configsvr0",configsvr:true,members:[{_id:0,host:"192.168.12.161:27019"},{_id:1,host:"192.168.12.162:27019"},{_id:2,host:"192.168.12.163:27019"},{_id:3,host:"192.168.12.164:27019"},{_id:4,host:"192.168.12.169:27019"}]}) MONGO_HOME=/home/cloud/platform/mongodb-3.4.5/ ${MONGO_HOME}/bin/mongod --config ${MONGO_HOME}/configserver.conf
c)mongos
#!/bin/bash #mogos dont need to initiate, #sh.enableSharding("dbname") to create database #sh.shardCollection("dbname.tablename", {id: "hashed"}) to create a shard table split by id /home/cloud/platform/mongodb-3.4.5/bin/mongos --config /home/cloud/platform/mongodb-3.4.5/mongosserver.conf
2、启动过程
a、将脚本和配置文件复制到每台机器上
b、启动每个shardsvr,然后登录到shardsvr上,执行初始化过程:
1、执行start-shardsvr.sh 2、执行bin/mongo --host ${hostIP} --port ${hostport} shardsvr的默认端口是27018 configsvr的默认端口是27019 mongos的默认端口是27017 在上面配置文件中未指定端口,一切都以默认为主 3、执行rs.initiate({_id:"shardsvr1",members:[{_id:0,host:"192.168.12.161:27018"}]}) 进行初始化工作 4、执行rs.status()查看shardsvr状态,一个成功的例子如下:
c、启动所有configsvr,并使用mongo --host --port命令登录到任意一台configsvr的configsvr端口上(default:27019)。并执行初始化工作:
rs.initiate({_id:"configsvr0",configsvr:true,members:[{_id:0,host:"192.168.12.161:27019"},{_id:1,host:"192.168.12.162:27019"},{_id:2,host:"192.168.12.163:27019"},{_id:3,host:"192.168.12.164:27019"},{_id:4,host:"192.168.12.169:27019"}]})
d、启动mongos,这时已经可以在mongos上执行我们的操作了。
//先添加shard分片,如果shardsvr1有多个节点也只用写一个,毕竟一个replica相当于一个节点,使用时会自动找到primary的
sh.addShard("shardsvr1/192.168.12.161:27018"))
//把所有的都加进去之后
printShardingStatus()
然后就是正常的mongo shell操作了,可以把mongos当成一个普通的单机mongodb来使用,操作基本相同,除了创建sharding表
创建表如下:
sh.enableSharding("dbname") to create database sh.shardCollection("dbname.tablename", {"_id": "hashed"}) to create a shard table hashed by _id
需要注意的是,"_id"是mongo分片依据,不能重复,如果想以其他字段来进行hash,将命令中的"_id"改为字段名称就可以了,但是mongo还是会自动创建一个_id列用来索引
添加索引:
db.collectionname.ensureIndex({"indexColumn":1})
第三部分
JavaAPI小tips
获取连接:
lazy val mongo = new MongoClient("192.168.12.161", 27017) lazy val db = mongo.getDatabase("testdb") lazy val dbColl = db.getCollection("origin2")
插入数据: