您的位置:首页 > 数据库 > Mongodb

MongoDB权威指南-第10章

2016-02-25 11:01 429 查看
MongoDB权威指南

10.1-同步

start

复制用于在多台服务器之间备份数据.MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点local库的一个固定集合.备份节点通过查询这个集合就可以知道需要进行复制的操作.

每个备份节点都维护着自己的oplog,记录着每次从主节点复制数据的操作

MongoDB在设计之初就考虑到了:将oplog中的操作执行多次与只执行一次的效果是一样的

由于oplog大小是固定的,他只能保存特定数量的操作日志 如果执行大量的批量操作,oplog很快就会被填满

10.1.1-初始化同步

> 1:删除所有已存在数据库:在这个过程中,所有现有的数据都会被删除.应该只在不需要保留现有数据的情况下做初始化同步.


2:克隆cloning:最耗时
3:oplog同步的第1步:克隆过程中所有的操作都会被记到oplog中,如果有文档在克隆过程中被移动了,需要重新克隆
4:oplog同步第2步:将第一个oplog同步中的操作记录下来            5:本地数据与主节点在某个时间点数据完全一致后,开始创建索引
6:如果仍落后于同步源,将创建索引其间的所有操作全部同步过来,防止成为备份节点
7:当前成员完成了初始化同步,切换到普通同步状态,这时当前节点即可成为备份节点了
从备份中恢复的速度会比使用mongod复制全部数据的速度要快得多
执行初始化同步时,会强制将当前成员的所有数据分页加载到内存中,这会导致需要频繁访问的数据不能常驻内存,所以会导致很多请求变慢


10.1.2-处理陈旧数据


为了避免陈旧备份节点的出现,让主节点使用比较大的oplog保存足够多的操作日志是很重要的.大的oplog会占用更多磁盘空间,但是一个折衷的选择,因为磁盘会越来越便宜

10.2-心跳


每个成员每隔2秒就会向其他成员发送一个心跳请求(heartbeat request).心跳请求的数据量是非常小的,用于检查每个成员的状态

成员状态            STARTUP             STARTUP2            RECOVERING          ARBITER             DOWN            UNKNOWN             REMOVED             ROLLBACK            FATAL


10.3-选举


整个选举过程只会花费几毫秒

如果选举打成平局,每个成员都要等待30秒才能开始下次选举

10.4-回滚
一个经常会被误用成员配置选项是设置每个成员的投票数量
改变成员的投票数量通常不会得到想要的结果,而且可能会导致大量的回滚操作
如果要回滚的数据量>300MB,或者要回滚30分钟以上的操作,回滚就会失败


10.1-同步

start

复制用于在多台服务器之间备份数据.MongoDB的复制功能是使用操作日志oplog实现的,操作日志包含了主节点的每一次写操作.oplog是主节点local库的一个固定集合.备份节点通过查询这个集合就可以知道需要进行复制的操作.

每个备份节点都维护着自己的oplog,记录着每次从主节点复制数据的操作

MongoDB在设计之初就考虑到了:将oplog中的操作执行多次与只执行一次的效果是一样的

由于oplog大小是固定的,他只能保存特定数量的操作日志

如果执行大量的批量操作,oplog很快就会被填满

10.1.1-初始化同步


1:删除所有已存在数据库:在这个过程中,所有现有的数据都会被删除.应该只在不需要保留现有数据的情况下做初始化同步.

2:克隆cloning:最耗时

3:oplog同步的第1步:克隆过程中所有的操作都会被记到oplog中,如果有文档在克隆过程中被移动了,需要重新克隆

4:oplog同步第2步:将第一个oplog同步中的操作记录下来 5:本地数据与主节点在某个时间点数据完全一致后,开始创建索引

6:如果仍落后于同步源,将创建索引其间的所有操作全部同步过来,防止成为备份节点

7:当前成员完成了初始化同步,切换到普通同步状态,这时当前节点即可成为备份节点了

从备份中恢复的速度会比使用mongod复制全部数据的速度要快得多

执行初始化同步时,会强制将当前成员的所有数据分页加载到内存中,这会导致需要频繁访问的数据不能常驻内存,所以会导致很多请求变慢

10.1.2-处理陈旧数据


为了避免陈旧备份节点的出现,让主节点使用比较大的oplog保存足够多的操作日志是很重要的.大的oplog会占用更多磁盘空间,但是一个折衷的选择,因为磁盘会越来越便宜


10.2-心跳
每个成员每隔2秒就会向其他成员发送一个心跳请求(heartbeat request).心跳请求的数据量是非常小的,用于检查每个成员的状态

成员状态

STARTUP

STARTUP2

RECOVERING

ARBITER

DOWN

UNKNOWN

REMOVED

ROLLBACK

FATAL

10.3-选举
整个选举过程只会花费几毫秒

出现网络问题时,心跳会在最多20秒后超时 如果选举打成平局,每个成员都要等待30秒才能开始下次选举

10.4-回滚

一个经常会被误用成员配置选项是设置每个成员的投票数量

改变成员的投票数量通常不会得到想要的结果,而且可能会导致大量的回滚操作

如果要回滚的数据量>300MB,或者要回滚30分钟以上的操作,回滚就会失败

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: