mongodb集群搭建 (仲裁模式)

JavaScript014

mongodb集群搭建 (仲裁模式),第1张

8.1 主节点执行

/yuanben/mongodb/mongodb/bin/mongo 192.168.0.11:27017

use admin

mgdb_rscfg={ _id:"yuanben-rs", members:[ {_id:0,host:'192.168.0.11:27017',priority:2}, {_id:1,host:'192.168.0.12:27017',priority:1},{_id:2,host:'192.168.0.13:27017',arbiterOnly:true}] }

rs.initiate(mgdb_rscfg)

通过rs.status()查看是否生效 生效后 mater slave的客户端命令显示皆有变化哦

8.2 设置从节点读权限

让slave节点支持读操作,在slave节点上修改mongorc.js启动文件

vi ~/.mongorc.js

加入以下内容即可:

setSlaveOk()

function setSlaveOk() {

rs.slaveOk()

print('slaveOk has been setted!’)

}

需要重启这个节点

kill -2 12595

./start.sh

8.3 创建用户

use admin

db.createUser(

{

user: “root”,

pwd: “xxxxxx”,

roles: [ { role: "root", db: "admin" } ]

}

)

db.createUser(

{

user: “scms”,

pwd: “xxxxxx”,

roles: [ { role: "readWrite", db: "scms" },{ role: "dbOwner", db: "scms" } ]

}

)

mongodb的读写分离使用ReplicaSets来实现对于replicaset中的secondary节点默认是不可读的。在写多读少的应用中,使用ReplicaSets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。如果通过shell访问mongo,要在secondary进行查询。会出现如下错误:imageSet:SECONDARY>db.fs.files.find()error:{"$err":"notmasterandslaveOk=false","code":13435}有两种方法实现从机的查询:第一种方法:db.getMongo().setSlaveOk()第二种方法:rs.slaveOk()但是这种方式有一个缺点就是,下次再通过mongo进入实例的时候,查询仍然会报错,为此可以通过下列方式vi~/.mongorc.js增加一行rs.slaveOk()这样的话以后每次通过mongo命令进入都可以查询了