MongoDB权威指南-第10章

来源:互联网 发布:由,诲女知之乎 编辑:程序博客网 时间:2024/06/16 04:48

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分钟以上的操作,回滚就会失败

DISSIDIA思维导图

0 0
原创粉丝点击