MongoDB3.4的sharding集群搭建及JavaAPI的简易使用(2)

#!/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状态,一个成功的例子如下:

MongoDB3.4的sharding集群搭建及JavaAPI的简易使用

  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()

MongoDB3.4的sharding集群搭建及JavaAPI的简易使用

然后就是正常的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")

插入数据:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9bd67adfc68ab1ea86f75b7b3421b634.html