/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命令进入都可以查询了