[ mongoDB ] - mongoDB replSet 添加节点注意事项
2012-04-12 13:50
260 查看
mongoDB replSet(复制集群)
MongoDB支持多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正式由于这个情况,为mongoDB提供了数据一致性的保障。担当primary角色的机器能把读操作分发给slave。
部署Replica Sets
当读的压力越来越大时,可能会考虑添加slave节点机,分摊读压力。通常我们有两种方式添加节点。
一)通过oplog添加节点
oplog是主从操作日志。mongoDB的 Replice Set架构是通过一个日志来存储写操作,就是oplog。oplog.rs是一个固定长度的capped collection,他存储在local数据库中,用于记录Replice Set 操作日志(写)。
我们可以通过db.oplog.rs.find()查看其具体操作内容,或者使用printReplicationInfo()查看oplog元数据信息,printSlaveReplicationInfo查看slave的同步状态。
使用这种方式添加节点就好比通过oplog模拟了Primary的“整个”操作过程,(是整个完整的么?)以完成内容复制。
问题:
由于oplog是一个固定长度的capped collection,那么他并非完整的记录了primary的所有操作,因为日志中存储的信息有可能已经刷新过了。那么这个时候我们就要利用第二种方式了。
二)--fastsync和oplog配合使用
我们会想,直接将primary(或者当前集群中的某一slave)的数据文件复制出来,然后新节点直接指定到该数据文件目录(--dbpath),然后将复制到添加到集群(rs.add)过程中primary的操作通过oplog日志追加不就好了么?
实际上,这就是方式二的做法。
1)获取一个复制集成员的物理文件来初始化数据
scp -r /data/r /data/newSlave
特别注意,由于复制时被复制的物理文件尚未“离线”(r文件夹中持有mongoDB的锁),这个锁也会被复制到newSlave中,引起数据同步失败!
2)启用新节点
3)在primary中添加节点(rs.add)
----------------------------------------------------
Capped Collection
capped collection 是性能出色的有着固定大小的集合,以LRU(least recently used)规则和插入顺序进行age-out处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小。如果空间用完,新添加的对象将会取代集合中最旧的对象。
MongoDB支持多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正式由于这个情况,为mongoDB提供了数据一致性的保障。担当primary角色的机器能把读操作分发给slave。
部署Replica Sets
当读的压力越来越大时,可能会考虑添加slave节点机,分摊读压力。通常我们有两种方式添加节点。
一)通过oplog添加节点
oplog是主从操作日志。mongoDB的 Replice Set架构是通过一个日志来存储写操作,就是oplog。oplog.rs是一个固定长度的capped collection,他存储在local数据库中,用于记录Replice Set 操作日志(写)。
我们可以通过db.oplog.rs.find()查看其具体操作内容,或者使用printReplicationInfo()查看oplog元数据信息,printSlaveReplicationInfo查看slave的同步状态。
使用这种方式添加节点就好比通过oplog模拟了Primary的“整个”操作过程,(是整个完整的么?)以完成内容复制。
问题:
由于oplog是一个固定长度的capped collection,那么他并非完整的记录了primary的所有操作,因为日志中存储的信息有可能已经刷新过了。那么这个时候我们就要利用第二种方式了。
二)--fastsync和oplog配合使用
我们会想,直接将primary(或者当前集群中的某一slave)的数据文件复制出来,然后新节点直接指定到该数据文件目录(--dbpath),然后将复制到添加到集群(rs.add)过程中primary的操作通过oplog日志追加不就好了么?
实际上,这就是方式二的做法。
1)获取一个复制集成员的物理文件来初始化数据
scp -r /data/r /data/newSlave
特别注意,由于复制时被复制的物理文件尚未“离线”(r文件夹中持有mongoDB的锁),这个锁也会被复制到newSlave中,引起数据同步失败!
2)启用新节点
3)在primary中添加节点(rs.add)
----------------------------------------------------
Capped Collection
capped collection 是性能出色的有着固定大小的集合,以LRU(least recently used)规则和插入顺序进行age-out处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小。如果空间用完,新添加的对象将会取代集合中最旧的对象。
相关文章推荐
- 动态节点的生成注意事项及仿百度搜索事件代码
- 解析:使用php mongodb扩展时 需要注意的事项
- MongoDB安装为Windows服务方法与注意事项
- Ubuntu下eclipse添加tomcat及几点注意事项
- Ubuntu上安装MongoDB的完全步骤以及注意事项
- SoapUI使用注意事项——在<!CDATA>节点之前不要有空格
- spring boot 添加jsp支持注意事项
- django在project下的app目录下添加模板文件夹templates注意事项
- sqlite配置文件连接字符串,各依赖项注意添加节点system.data节点
- mongodb replica set 添加删除节点的2种方法
- CentOS MySQL 使用Insert 添加用户 注意事项
- CMakeLists.txt添加opencv库注意事项
- CE6添加Armulator SDK注意事项
- silverlight中对datagrid添加右键菜单的注意事项。
- c# 操作mongodb时注意事项
- fastdfs添加新group注意事项
- 添加Activity注意事项
- rac 中添加添加database和 instance 的注意事项
- Android在AndroidStudio中添加Module依赖的注意事项
- 单片机程序注意事项(随时添加补充…