MongoDB数据库生产案例实践三部曲

作者:北丐。 MongoDB中文社区联席主席,针对MongoDB,MySQL,Redis集群,Oracle,TiDB;有丰富的实践经验和企业级授课经验。



一、MongoDB数据库修改Oplog,

回收空间,升级3.2版本等


1. 目前生产环境现状


(1)  随着业务日益增大,数据量也随之增多,由于历史原因,所有业务DB基本都在一个MongoD实例中;


(2)  随之而来的就是业务访问DB QPS/TPS等压力增大,导致用户业务接口不断超时;


(3)  主机磁盘空间使用比率过大,数据库/集合存碎片比较多;


(4)  MongoDB版本为3.2,有一定的WT引擎内存死锁概率,建议升级到3.4版本;


(5)  Oplog在高峰期只有3.5分钟可同步数据时间间隔,覆盖后secondary节点成为recovering状态。


2. MongoDB环境<以commuser社区用户集群为例>


(1)  主机配置

16core cpu,128G内存,4TB<自建机房>SDD


(2)  MongoDB架构

  192.168.111.4:28010主

  192.168.111.5:28010从

  192.168.111.6:28010从

1主+两从复制集模式(业务读,大数据拉取数据)


(3)  数据库现状

user:PRIMARY> show dbs;

msg_user    816.698GB

comm_user   1721.887GB

video_user    1315.534GB


(4)  Oplog大小

a.    由于mongodb oplog是封顶集合,即固定大小;基于历史原因,oplog设置为1GB;

b.    存在的风险:比如3节点副本集,一主两从,如果oplog在高峰期,主库dml相当频繁,覆盖了oplog日志信息,而secondary节点<如上Oplog只有3分32秒时间>没有接收到,则secondary状态则会成为recovering状态,不可对外提供读服务;

c.    或者secondary节点在高峰期down,3分钟修复不好,则成为recovering状态


(5)  综合考量如上

a.    垂直拆分DB,降低集群的qps/tps,缓解业务访问DB产生资源竞争导致接口超时;

b.    以添加3.4版本副本集:同步数据,修改参数中Oplog大小;


3. 添加3.4版本隐藏副本节点


(1)  登陆主库111.5


(2)  执行添加命令

rs.add({_id:121,host:"192.168.111.7:28010", priority:0,hidden:true})

参数配置参考<MongoDB的设计规范http://www.mongoing.com/archives/25695>


(3)  为什么不添加3.2 mongo版本,而是添加了3.4mongo版本

  • 最主要原因:提升全量同步

a.    在拷贝数据的时候同时建立所有的索引,在之前的版本,拷数据时会先建立_id索引,其余的索引在数据拷贝完之后集中建立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值