mongoDB主从配置如下:
主库:
port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb.log fork=true ##后台运行 master=true
从库:
port=27018 dbpath=/usr/local/mongodb/slave/data/ logpath=/usr/local/mongodb/slave/log/mongodb.log fork=true ##后台运行 slave=true source=127.0.0.1:27017
启动:
./bin/mongod --master -config mongodb.conf
./bin/mongod --slave -config mongodb-slave.conf
查看主库log:
local数据库 oplog.$main表记录了log,从库通过此log同步数据
log的大小可以指定;
查看从库同步情况:
错误:not master and slaveOk=false
原因:从库默认不允许读写
解决办法:rs.slaveOk();
一些常用命令:
1、查看是否是主库 -切换到admin库下:
db.runCommand({"isMaster":1})
输出:
{ "ismaster" : false, "maxBsonObjectSize" : 16777216, "maxMessageSizeBytes" : 48000000, "maxWriteBatchSize" : 1000, "localTime" : ISODate("2017-06-14T06:58:00.707Z"), "maxWireVersion" : 5, "minWireVersion" : 0, "readOnly" : false, "ok" : 1 }
查看从库的源 local数据库下:
db.sources.find();
输出:
{ "_id" : ObjectId("59193ecfc8727abb3f4bd429"), "host" : "127.0.0.1:27017", "source" : "main", "syncedTo" : Timestamp(1497423513, 1) }
然后正常执行即可;
主从复制主要用来做读写分离,但并不能实现主从切换;
主从切换的实现需要通过副本集