master | 192.168.1.153 |
slave | 192.168.1.154 |
os | rhel 7.2 |
1、主从安装
# cd /usr/local/src
# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz
# tar -zxf mongodb-linux-x86_64-rhel70-3.2.4.tgz
# mv mongodb-linux-x86_64-rhel70-3.2.4 /usr/local/mongodb
# chmod +x /usr/local/mongodb/bin/*
# vi /etc/profile
export PATH=/usr/local/mongodb/bin:$PATH |
# source /etc/profile
# cd /usr/local/mongodb/
# mkdir -p data/mongodb
# mkdir -p data/logs
# vi data/mongodb.conf # master 配置
port=27017 dbpath=/usr/local/mongodb/data/mongodb/ logpath=/usr/local/mongodb/data/logs/mongodb.log fork=true logappend=true directoryperdb=true master=true oplogSize=2048 |
# vi data/mongodb.conf # slave 配置
port=27017 dbpath=/usr/local/mongodb/data/mongodb/ logpath=/usr/local/mongodb/data/logs/mongodb.log fork=true logappend=true directoryperdb=true slave=true source=192.168.1.153:27017 autoresync=true slavedelay=5 oplogSize=2048 |
# mongod --config /usr/local/mongodb/data/mongodb.conf
about to fork child process, waiting until server is ready for connections. forked process: 17802 child process started successfully, parent exiting |
# vi /etc/rc.local
mongod --config /usr/local/mongodb/data/mongodb.conf |
2、测试
# 主库新增记录
# mongo
> usetest
> db.blog.save({title:"new article"})
# 从库查询
# mongo
> use test
> db.blog.find()
Error: error: { "OK" : 0 , "errmsg" : "notmaster and slaveok=false", "code" : 13435}
解决:
有两种方法实现从机的查询: 第一种方法:db.getMongo().setSlaveOk(); 第二种方法:rs.slaveOk(); 但是这种方式有一个缺点就是,下次再通过mongo进入实例的时候,查询仍然会报错,为此可以通过下列方式 vi ~/.mongorc.js 增加一行rs.slaveOk(); 这样的话以后每次通过mongo命令进入都可以查询了
来自 <https://zhidao.baidu.com/question/1821198297277350388.html>
|
正常返回:
{ "_id" : ObjectId("55595022e26fd5794a58bdd3"), "title" : "new article" }