mongodb的集群部分的问题及其理解整理

1.如何实现主从模式

启动时,-master指定主, -source标志是从(从库是没有写的权限).


2.主从模式,主挂了,能否自动切换?

不能,只能手动切换.(副本集模式,可实现自动切换)


3.如何实现副本集模式

启动时,使用-replSet指定


4.副本集是怎样的存在

一个主服务器(副本集下,无特定的主服务器),N个副本,N个仲裁

心跳:主-->从,频率2s

mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读(rs.slaveOk())。


5.当前主库挂了,副本集是如何产生新主库的

冲裁服务器,会根据rublly算法,进行投票,全体通过,即当选新主。

关键要素:最新更新时间


6.什么时候数据同步,同步分几种

同步分两种,一种是初始化同步,一种是keep复制。

初始化同步:

当副本启动,肯定是全部信息同步;

当副本远远落后主库(根据opLog判断),也会全量同步。

keep复制:即增量同步


7.什么是opLog

oplog(operate log)也是mongodb的一个集合,保存在local.oplog.rs里,但是这个oplog是一个capped collection也就是固定大小的集合,新数据加入超过集合的大小会覆盖。所以这里需要注意,跨IDC的复制要设置合适的oplogSize,避免在生产环境经常产生全量复制。oplogSize 可以通过–oplogSize设置大小,对于linux 和windows 64位,oplog size默认为剩余磁盘空间的5%。


8.从节点的性能肯定不如主节点,但是对主节点是全量拷贝,从节点压力过大,如何处理

使用新的技术--分片


9.什么是分片

分片的思想是:分而治之。所有数据请求,经过mongs(类似路由器),分发到shard(分片),config Server负责记录路由和分片配置信息(mongos无物理存储分片和路由信息,只存在内存,config Serve实现物理存储),replica Set负责副本集(数据备份和恢复,仲裁主库)




10.如何实现分片

1.通过mongos,不是mongod,同时指定下config服务器


2.启动分片的服务器(即普通的mongo服务器)


3.addshard()

这里要注意的是,在addshard中,我们也可以添加副本集,这样能达到更高的稳定性

4.切分数据

4.1开启数据库分片功能,enablesharding

4.2指定集合中分片的片键


分片的更具体操作,请参考这里



mongodb在线文档

https://docs.mongodb.com/v2.2/reference/method/rs.slaveOk/


posted @ 2015-12-15 01:08  Bug开发攻城狮  阅读(377)  评论(0编辑  收藏  举报