MongoDB主从复制
2016-07-09 21:47
501 查看
MongoDB的主从复制我觉得可以理解为实时备份,当然它还有切换主从服务器,用于主服务器挂掉后的临时使用功能。它的用法很简单,也是该数据库在云计算处理上十分强大的地方。下面来实践一下看看。
1、主服务器
配置zhu.conf
dbpath = D:\MongoDB\db1 #主数据库地址
port = 1111 #主数据库端口号
bind_ip = 127.0.0.1 #主数据库所在服务器
master = true #确定我是主服务器
zhu.bat
mongod --config zhu.conf
2、从服务器
配置cong.conf
dbpath = D:\MongoDB\db2 #从数据库地址
port = 2222 #从数据库端口号
bind_ip = 127.0.0.1 #从数据库所在服务器
source = 127.0.0.1:1111 #确定主数据库端口 这个配置项(source)可以用shell动态添加
slave = true #确定自己是从服务器
cong.bat
mongod --config 7777.conf
3、打开顺序:主服务器,从服务器,主shell端,从shell端
4、主shell端中
mongo 127.0.0.1:8888
可以看出,虽然从服务器不可以查看,但实际结果还是把主服务器的内容复制过去了。
6、其它一些配置项
--only 从节点---》 指定复制某个数据库,默认是复制全部数据库
--slavedelay 从节点---》设置主数据库同步数据的延迟(单位是秒)
--fastsync 从节点---》以主数据库的节点快照为节点启动从数据库
--autoresync 从节点---》如果不同步则从新同步数据库
--oplogSize 主节点---》设置oplog的大小(主节点操作记录存储到local的oplog中)
7、手动挂载从节点
7.1、查看保的主节点
7.2、挂载到哪个主节点下
db.sources.insert({“host”:”127.0.0.1:1111”})
7.3、删除被挂载的主节点
db.sources.remove({“host”:”127.0.0.1:1111”})
备注:主从备份中,主服务器是可以增加用户的,但是从服务器上不允许增加用户,会报下面的错。此点还没有详细看是不允许增加所有用户,还是不允许增加超级用户,暂时先不做研究
个人感觉这种服务器配置是给一些公司读取操作并不多的使用的。它的成本很小,又可以起到备份的作用。
1、主服务器
配置zhu.conf
dbpath = D:\MongoDB\db1 #主数据库地址
port = 1111 #主数据库端口号
bind_ip = 127.0.0.1 #主数据库所在服务器
master = true #确定我是主服务器
zhu.bat
mongod --config zhu.conf
2、从服务器
配置cong.conf
dbpath = D:\MongoDB\db2 #从数据库地址
port = 2222 #从数据库端口号
bind_ip = 127.0.0.1 #从数据库所在服务器
source = 127.0.0.1:1111 #确定主数据库端口 这个配置项(source)可以用shell动态添加
slave = true #确定自己是从服务器
cong.bat
mongod --config 7777.conf
3、打开顺序:主服务器,从服务器,主shell端,从shell端
4、主shell端中
mongo 127.0.0.1:8888
> show dbs local 0.000GB > use foobar switched to db foobar > db.poot.insert({name:"dddddd"}) WriteResult({ "nInserted" : 1 })5、从shell端中
> show dbs 2016-07-09T21:22:04.175+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1 shellHelper.show@src/mongo/shell/utils.js:760:19 shellHelper@src/mongo/shell/utils.js:650:15 @(shellhelp2):1:1 > rs.slaveOk() --------------------------上面错的原因是从服务器上的数据库是不允许进行读写操作,所以就会报类似于这样的错误,这句是解决方法。 > show dbs foobar 0.000GB local 0.000GB > use foobar switched to db foobar > db.poot.find() { "_id" : ObjectId("5780fa74cf0bf9bce1f44239"), "name" : "dddddd" }
可以看出,虽然从服务器不可以查看,但实际结果还是把主服务器的内容复制过去了。
6、其它一些配置项
--only 从节点---》 指定复制某个数据库,默认是复制全部数据库
--slavedelay 从节点---》设置主数据库同步数据的延迟(单位是秒)
--fastsync 从节点---》以主数据库的节点快照为节点启动从数据库
--autoresync 从节点---》如果不同步则从新同步数据库
--oplogSize 主节点---》设置oplog的大小(主节点操作记录存储到local的oplog中)
7、手动挂载从节点
7.1、查看保的主节点
> use local switched to db local > db.sources.find() { "_id" : ObjectId("5780fa510006dc38178d308f"), "host" : "127.0.0.1:8888", "sour ce" : "main", "syncedTo" : Timestamp(1468071571, 1) } >
7.2、挂载到哪个主节点下
db.sources.insert({“host”:”127.0.0.1:1111”})
7.3、删除被挂载的主节点
db.sources.remove({“host”:”127.0.0.1:1111”})
备注:主从备份中,主服务器是可以增加用户的,但是从服务器上不允许增加用户,会报下面的错。此点还没有详细看是不允许增加所有用户,还是不允许增加超级用户,暂时先不做研究
> db.createUser({user:"dy",pwd:"123",roles:["root"]}) 2016-07-09T20:44:29.847+0800 E QUERY [thread1] Error: couldn't add user: not master : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.createUser@src/mongo/shell/db.js:1267:15 @(shell):1:1
个人感觉这种服务器配置是给一些公司读取操作并不多的使用的。它的成本很小,又可以起到备份的作用。
相关文章推荐
- mongodb 在线添加新的分片复制集 后续
- mongoDB的导出、导入、运行时的备份
- mongodb3.2版本用户管理
- mongodb 运行时添加新的分片复制集
- 利用Morphia框架工具类操作mongodb的实例。
- mongodb的修改器
- window平台安装MongoDB
- 用java连接mongodb并执行$sum和$avg结合的聚合函数的实例。
- linux32位mongodb启动报错【exception in initAndListen 】
- golang学习之mgo操作mongodb
- MongoDB增删查改
- MongoDB-基础-limit-skip-sort
- MongoDB-基础-条件操作符
- mongodb-基础-update-remove
- MongoDB 3.0 用户创建
- morphia查询mongodb内嵌文档-数组查询$elemMatch|hasThisElement实例
- mongodb 备份 还原 导出 导入
- 作业上传+学生互评打分系统
- mongodb find语法记录
- CentOS系统环境下安装MongoDB