mongodb主从备份
来源:互联网 发布:程序员的职业发展 编辑:程序博客网 时间:2024/05/22 13:17
http://www.dev-club.net/xiangxixinxi/1087122010072906124317/201107260532452.html
这里在简单的介绍一下Master Slave/ Replica Sets 备份机制,这两种模式都是基于主服务器的oplog来实现所有从服务器的同步。
oplog记录了增删改操作的记录信息(不包含查询的操作),但是oplog有大小限制,当超过指定大小,oplog会清空之前的记录,重新开始记录。(太坑爹了!!!)Master Slave 方式 主服备器会产生 oplog.$main 的日志集合
Replica Sets
两种机制下,所有从服务器都会去轮询主服务器oplog日志,若主服务器的日志较新,就会同步这些新的操作记录。但是这里有个很重要的问题,从服务器由于网络阻塞,死机等原因无法极时同步主服务器oplog记录:
一种情况: 主服务器oplog不断刷新,这样从服务器永远无法追上主服务器。
另外一种情况:刚好主服务器oplog超出大小,清空了之前的oplog,这样从服务器就与主服务器数据就可能会不一致了,这第二种情况,我是推断的,没有证实。
另外要说明一下Replica Sets 备份的缺点,当主服务器发生故障时,一台从服务器被投票选为了主服务器,但是这台从服务的oplog如果晚于之前的主服务器oplog的话,那之前的主服务器恢复后,会回滚自己的oplog操作和新的主服务器oplog保持一致。由于这个过程是自动切换的,所以在无形之中就导致了部分数据丢失。
这里看主从备份的操作:
主上:
[root@mongodb2 data]# more master_configfile
dbpath=/data/db/
master=true
logpath=/data/db/mongodb_master.log
port=27017
logappend=true
删掉local.* 为了重建oplogSize
/usr/local/mongodb/bin/mongod --oplogSize=8038 --configmaster_configfile &
可以查看一下:
[root@mongodb3 db]# /usr/local/mongodb/bin/mongo
MongoDB shell version: 1.8.0
connecting to: test
> db.printReplicationInfo()
configured oplog size:
log length start to end: 0secs (0hrs)
oplog first event time:
oplog last event time:
now:
从上
[root@mongodb1 data]# more slave_configfile
dbpath=/data/db/
slave=true
source=192.168.1.41:27017
slavedelay=30
logpath=/data/db/mongodb_slave.log
port=27017
logappend=true
启动
/usr/local/mongodb/bin/mongod --configslave_configfile
等待数据同步完成后,可以在两台机器上db.表名.count()一下,对比看看数据数量
当主down机后
salve提成为主:
$ rm /data/db/local.*
$ /usr/local/mongodb/bin/mongod --oplogSize=8038 --configmaster_configfile &
等主恢复后,让他变成从,可能还需要重新rsync一次数据
/usr/local/mongodb/bin/mongod --configslave_configfile
一些问题
1,主上数据量很大,那么这时候来做主从同步,从上的数据是不是必须从主同步过来,而不能把主上dump下的数据 放到从上restore在做主从同步?(我测试了一下如果先dump,restore后在做主从同步的话,这段时期的数据从是不会再去同步的)
2,主从同步做好了,过了一段时间从down机了,等从恢复后,会自动的去同步主上的数据吗?(这个我测试是可以,但是数据量比较小,而且我模拟down机时间也比较短)
3,主down机后,是不是必须将从上的local.*文件删除,然后以主的方式启动?
1.最好是全部rsync一次,其实也可以把主做成master后在dump数据,从restore数据完之后会从主的oplog位置在同步
2.会的,除非oplog设置得不够大,而偏偏主又把oplog清空了
3.也是必须的,因为默认的slave是只能读不能写,所以必须改成主的模式启动
关于oplog的概念请参考
http://blog.163.com/digoal@126/blog/static/163877040201011654535891
- mongodb主从备份
- mongodb主从备份配置
- 【学习笔记】MongoDB主从备份
- mongodb主从同步及备份还原
- mongodb数据备份还原及主从搭建
- mongodb数据备份还原及主从搭建
- MongoDB数据库的安装、配置、主从同步、备份与恢复
- mongodb 主从
- mongodb 主从
- mongodb 主从
- mongodb主从
- mongodb 主从设置 互为主从
- mongodb 备份
- MongoDB备份
- mongodb备份
- 【mongoDB】 备份
- MongoDB 备份
- 【MONGODB】验证MONGODB 主从复制
- 模拟器启动飞速
- js url传值中文乱码之解决之道_javascript技巧
- Core Graphics
- 破解Google Gmail的https新思路 ssl中间人攻击
- 单键表操作
- mongodb主从备份
- 事务的原子性,一致性,隔离性,持久性
- 【二郎助手】新增自动补全以大写字母开头的变量
- Centos+apache+postfix+Openwebmail 备忘
- 15个被苹果逼上绝路的软硬件产品
- 那十月,我们一起追过的c++代码
- 这十月,我与C++代码相处的日子
- SYN Foold ,IP欺骗DOS ,UDP洪水,Ping洪流 ,teardrop ,Land ,Smurf ,Fraggle 攻击 原理
- 2012-02-13 00:36 图片的横向滑动