设为首页 收藏本站
查看: 988|回复: 0

[经验分享] mongodb 主从复制

[复制链接]

尚未签到

发表于 2015-7-8 09:10:00 | 显示全部楼层 |阅读模式
1.主从复制
  主从复制是MongoDB最常用的复制方式。可用于备份、故障恢复、读扩展等。
  最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址 。
2.选项
  --only:在从节点上指定只复制特定某个数据库(默认复制所有数据库)。
  --slavedelay:用在从节点,当应用主节点的操作时增加延时(单位为秒)。
  --fastsync:以从节点的数据快照为基础启动从节点。(简单来说以前是主节点的备份,现在从新启动,就会在原来数据的基础上启动,不会重新同步一次主节点的所有数据)。
  --autoresync:如果从节点与主节点不同步了,则自动重新同步。
  --oplogSize:主节点oplog的大小(单位是MB)。
  注:主节点的操作记录称为oplog。oplog存储在一个特殊的数据库中,叫做local。oplog只记录改变数据库状态的操作,如查询操作就不会存储。
  
3.命令
  1.设置主节点(ip:10.0.0.1)



Sql代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf DSC0000.png

  • hww@ubuntu:~$ mkdir -p ~/dbs/master  
  • hww@ubuntu:~$ mongod -dbpath ~/dbs/master -prot 27037 -master  

  2.设置从节点(ip:10.0.0.2)



Java代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf

  • hww@ubuntu:~$ mkdir -p ~/dbs/slave  
  • hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave -source 10.0.0.1:27037  

  3.通过向sources集合添加主节点信息(ip:10.0.0.3)



Java代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf

  • hww@ubuntu:~$ mkdir -p ~/dbs/slave  
  • hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave   
  向sources集合添加主节点信息:
  



Java代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf

  • > use local  
  • switched to db local  
  • > db.sources.insert({"host":"10.0.0.1:27037"})  
  查询文档是否插入成功:
  



Java代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf

  • > db.sources.find()  
  • {   
  •         "_id" : ObjectId("4edd829376484aaedee08dae"),   
  •         "host" : "10.0.0.1:27037", "source" : "main"   
  • }  

  4.修改从节点的配置,改为10.0.0.4:27037为源,则可以用insert和remove来完成



Java代码 http://ihuangweiwei.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf

  • > db.sources.insert({"host":"10.0.0.4:27037"})  
  • > db.sources.remove({"host":"10.0.0.1:27037"})   
  

mongodb文档数据库提供了主从复制模式,其实mongodb的主从复制配置很简单,就是启动mongod服务进程的时候 分别指定 --master ,--slave,一个是以主模式启动,另一个属于从模式启动,当主库更新时,数据就会被被复制到从数据库中。
此次测试仅在单台服务器上开启2deamon来模拟2台服务器进行主从复制:
主库:./mongod --master --dbpath=/opt/monogdata/data --port=60000
从库:./mongod --slave --dbpath=/opt/monogdata/slavedata/ --port=60010 --source=127.0.0.1:60000

--主库:
[monogdb@yangDB bin]$ ./mongo --port 60000
MongoDB shell version: 1.8.3-rc0
connecting to: 127.0.0.1:60000/test
> show dbs
admin   (empty)
local   1.203125GB
test    0.203125GB
> use test
switched to db test
> show collections --查看主库中的对象
system.indexes  --system.indexes用来存放索引的表
test--一个测试表
--查看test表中的内容
>db.test.find(); --此操作=select * from test;
{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
--向test表中插入数据
> db.test.insert({id:2,val:"yangql is learing monogdb master slave!"});
> db.test.find();                                                      
{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
                  
--备库
[monogdb@yangDB bin]$ ./mongo --port=60010
MongoDB shell version: 1.8.3-rc0
connecting to: 127.0.0.1:60010/test
> db
test
> db.printSlaveReplicationInfo(); ---显示主库的信息。
source:   127.0.0.1:60000
         syncedTo: Fri Aug 12 2011 21:19:42 GMT+0800 (CST)
                 = 7secs ago (0hrs)
> show collections
system.indexes
test  --主库的数据已经被复制到从库了
> db.test.find();
{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
--主库更新数据后查看从库。
> db.test.find();
{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
--测试在从库更新数据,但是不成功!
> db.test.insert({id:2,val:"yangql is writing things to  slave,but it can`t do this!"});                                    
not master
> db.test.find();  
{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
monogdb的主从复制是不能达到主库当机以后,从库自动升级到主库的,而Replica Pairs借用arbiter可以完成主从故障迁移 。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84367-1-1.html 上篇帖子: 使用log4Net 输出日志到mongodb 下篇帖子: 大数据应用之:MongoDB从入门到精通你不得不知的21个为什么?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表