# mongod2.6升级3.0及优化方案
先把大概步骤写出来,背景和细节后续补充
## 升级副本集的步骤为:
1.master节点执行命令从集群中剔除需要升级的副本节点
```
goumin:PRIMARY> rs.remove("192.168.56.202:27017")
```
2.剔除后在副本机器上停止mongo服务
```
/etc/init.d/mongodb stop
```
3.修改配置文件,去掉集群的配置
```
vim /usr/local/mongodb/conf/mongo.conf
```
4.重新启动副本节点的mongo服务,验证升级条件是否允许
/etc/init.d/mongodb start
```
>use admin
>db.upgradeCheckAllDBs()
```
如果最后返回true就是满足升级的要求
5.检测通过后停止mongo服务使用
```
/etc/init.d/mongodb stop
killall mongod
```
6.使用3.0的bin文件替换2.0的bin文件
```
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-v3.0-latest.tgz
tar zxf mongodb-linux-x86_64-v3.0-latest.tgz
\cp -a mongodb-linux-x86_64-3.0.15-19-gb4172b9/bin/* /usr/local/mongodb/bin/
```
6.重新启动Mongo查看是否正常
```
/etc/init.d/mongodb start
```
7.关闭mongo服务,修改配置文件新的引擎和新的数据目录
```
/etc/init.d/mongodb stop
mkdir /data/mongov3
chown -R mongodb:mongodb /data/mongov3/
```
修改配置文件引擎为wiredTiger并且将数据目录修改为新的目录
```
[root@mongodb-202 ~]# cat /usr/local/mongodb/conf/mongo.conf
##3.0数据目录
dbpath = /data/mongov3
##日志目录
logpath = /usr/local/mongodb/logs/mongodb.log
##守护模式
fork=true
##pid file
pidfilepath=/var/run/mongod.pid
##socket
bind_ip=0.0.0.0
## no password
noauth=true
oplogSize = 2048
#副本参数
replSet = vim26/172.16.1.202 :27017
#使用wiredTiger引擎
storageEngine=wiredTiger
```
8.重新启动副本的Mongo,并在主节点执行命令加入集群
```
goumin:PRIMARY> rs.add("192.168.56.202:27017");
```
9.验证写入写入数据同步是否正常
主库操作写入测试数据
```
goumin:PRIMARY> for(var i=0;i<10000;i++)db.d.insert({uid:i,uname:'osqlfan'+i});
WriteResult({ "nInserted" : 1 })
```
查看刚才写入的数据
```
goumin:PRIMARY> db.d.find().count();
10000
```
副本操作,查看是否有刚才同步的数据,如果有,则同步正常
```
goumin:SECONDARY> db.d.find().count();
10000
```
10.相同操作完成所有副本
```
#主库操作
rs.remove("192.168.56.201:27017")
#副本操作关闭数据库
/etc/init.d/mongodb stop
#修改副本的配置文件,注释复制语句
sed -i 's@replSet@#replSet@' /usr/local/mongodb/conf/mongo.conf
#启动mongo服务,验证升级条件是否允许
/etc/init.d/mongodb start
>use admin
>db.upgradeCheckAllDBs()
#停止mongo服务,杀掉mongod进程
/etc/init.d/mongodb stop
killall mongod
#复制3.0的bin文件替换2.6
\cp -a mongodb-linux-x86_64-3.0.15-19-gb4172b9/bin/* /usr/local/mongodb/bin/
#恢复配置文件,添加引擎文件以及修改数据目录配置
[root@mongodb-201 ~]# egrep "wiredTiger|dbpath" /usr/local/mongodb/conf/mongo.conf
dbpath = /data/mongov3
storageEngine=wiredTiger
#创建新的数据目录
mkdir /data/mongov3
chown -R mongodb:mongodb /data/mongov3/
#重新启动mongo服务
/etc/init.d/mongodb start
#重新加入集群
goumin:PRIMARY> rs.add("192.168.56.201:27017");
{ "down" : [ "192.168.56.201:27017" ], "ok" : 1 }
#写入数据检查是否正常
```
11.副本升级完成后将master进行降级
主库进行降级
```
goumin:PRIMARY> rs.stepDown()
```
集群新主库删除主库的节点
```
rs.remove("192.168.56.201:27017")
```
剩下的操作和从库一样
#参数调优
## 升级3.0后提示的警告
```
2017-12-11T13:05:46.336+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-12-11T13:05:46.336+0800 I CONTROL [initandlisten]
2017-12-11T13:05:46.337+0800 I CONTROL [initandlisten]
2017-12-11T13:05:46.337+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-12-11T13:05:46.337+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-12-11T13:05:46.337+0800 I CONTROL [initandlisten]
2017-12-11T13:05:46.337+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7976 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
2017-12-08T06:20:07.343+0800 [initandlisten] ** WARNING: You are running on a NUMA machine.
2017-12-08T06:20:07.343+0800 [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2017-12-08T06:20:07.343+0800 [initandlisten] ** numactl --interleave=all mongod [other options]
```
## 针对警告进行优化
1.如果条件允许的话,建议重新格式化磁盘为xfs格式
```
apt-get install xfsprogs
mkfs.xfs /dev/sdb
mount -t xfs /dev/sdb /data/
```
2.优化大内存页
```
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
```
4.优化连接数
```
vim /etc/profile
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 32000
```
5.关闭numa
- 安装numactl
```
apt-get install numactl
```
- 执行下面2条命令
```
echo > /proc/sys/vm/zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode=0
```
- 修改启动命令,可以在启动脚本里更改
```
numactl --interleave=all /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongo.conf
```
# mongo相关博客地址
非常全面的dba博客
http://blog.csdn.net/mchdba/article/category/1381536
mongodb2.6 replSet 升级到 mongodb3.0
http://blog.csdn.net/zhaowenzhong/article/details/50593363
官方对于numa的介绍和解决办法
https://docs.mongodb.com/manual/administration/production-notes/#production-numa
官方对于ulimit的介绍
https://docs.mongodb.com/manual/reference/ulimit/
官方升级3.0的介绍
https://docs.mongodb.com/manual/release-notes/3.0-upgrade/
mongodb关于ulimit优化操作
http://www.cppblog.com/changshoumeng/archive/2015/04/13/210327.html
- 运维笔记
- 零: 安装部署篇
- Zabbix
- HAproxy
- Nginx
- Apache
- Tomcat
- Mysql
- Redis
- ELK
- MongoDB
- hadoop
- GIt
- JDK
- Docker
- OpenVPN
- iRedMail
- GitLab
- ESXi
- Jenkins
- NFS
- rsync
- Python
- Keepalived
- 软件打包篇
- 私有仓库篇
- kafka
- zookeeper
- Spark
- Linux基础篇
- 1.1 Linux系统介绍
- 1.3 系统优化
- 1.4 问题总结
- Linux核心命令
- 声明
- 1-文件和目录操作命令
- 1.3 tree: 以树形结构显示目录下的内容
- 2-文件过滤及内容编辑处理命令
- find:查找目录下的文件
- 3-文本处理三剑客
- 4-Linux信息显示与搜索文件命令
- du:统计磁盘空间使用情况
- 5-文件备份与压缩命令
- rsync:文件同步工具
- 6-Linux用户管理及用户信息查询命令
- 7-Linux磁盘与文件系统管理命令
- 8-Linux进程管理命令
- 9-Linux网络管理命令
- 10-Linux系统管理命令
- 11-Linux系统常用内置命令
- 服务相关
- Nginx
- 安装部署
- 文件路径说明
- 服务启动管理
- 配置文件说明
- json格式日志的配置文件
- https代理
- nginx负载均衡代理websocket
- 服务优化
- 维护脚本
- 问题总结
- rewrite带?跳转
- nginx查看默认安装的模块
- HAproxy
- 2.2.1 安装部署
- 2.2.2 文件路径说明
- 2.2.3 服务启动管理
- 2.2.4 配置文件说明
- ha代理websocket
- 2.2.5 集群高可用
- 2.2.6 服务优化
- 2.2.7 维护脚本
- 2.2.8 问题总结
- PHP
- 2.3.1 安装部署
- keepalived
- 配置文件注释
- 配置多组VIP
- Java
- 安装部署java
- ansible部署java
- supervisor
- supervisor安装部署测试
- iptables
- CentOS7安装配置iptables
- pm2相关
- kafka相关
- kafka和zookeeper集群安装部署
- nodejs
- 安装部署nodejs
- sersync
- sersync备份图片服务
- gitlab相关
- gitlab安装部署
- gitlab强制修改密码
- gitlab不同的连接方式
- jenkins相关
- 安装部署jenkins
- python相关
- python虚拟环境
- debian安装pyhton3.6
- Turnserver服务器搭建
- NFS相关
- 固定NFS和rsync端口
- go相关
- 安装go
- maven相关
- debian私有仓库搭建
- 翻墙
- linux下的百度云盘
- 私有网盘owncloud部署
- crontab定时任务
- 数据库相关
- mongodb
- 重用操作命令
- 副本集配置文件
- 慢查询设置
- 数据备份恢复以及数据导入导出
- 从库允许只读设置
- redis
- redis单节点安装部署
- 配置文件注释
- redis分析工具rdbtools使用
- redis数据导入导出集群工具
- redis内存信息解释
- redis警告优化
- PHP会话session保存到redis集群
- redis启动关闭脚本
- elk相关
- elastersearch常用命令
- elasticsearch6所需配置文件
- elasticsearch6的head插件安装
- elk6安装脚本
- filebeat收集php日志多行转换
- filebeat自定义index
- elk-dockercompes配置
- docker部署elk收集runtime日志
- elasticsearch6添加新节点报错
- elasticsearch查看索引
- docker部署es+filebeat+kibana
- mysql相关
- mysql日志
- mysql密码过期
- mysql用户授权访问库
- mysql安装部署
- MariaDB安装部署
- 大数据相关
- hadoop相关
- Ambari2.6离线安装hadoop
- Ambari安装出现的问题
- 检测hadoop当前运行了哪些服务端口脚本
- 监控相关
- CentOS7安装Zabbix3.4
- docker安装zabbix
- 运维脚本
- 根据配置文件检查服务端口运行状态
- nginx日志分析
- ngixn日志合并脚本
- nginx查询关键链接响应时间
- 图片同步脚本
- 批量获取iptables设置的端口然后验证本机端口是否存活
- 按日期统计不同接口的响应时间
- php进程假死状态定时清理
- 运维自动化
- deb打包命令
- ansible相关
- ansible部署
- ansible配置推送
- 编程语言
- 1-SHELL
- 2-Python
- 3-GO
- 有趣的工具
- vim
- 声明
- 第1章: Vim解决问题的方式
- 技巧1-认识 . 命令
- 技巧2-不要自我重复
- 技巧3-以进为退
- 技巧4-执行,重复,回退
- 技巧5-查找并手动替换
- 技巧6-认识 . 范式
- 第2章: 普通模式
- 第3章: 插入模式
- 第4章: 可视模式
- 第5章: 命令行模式
- 第6章: 管理多个文件
- 第7章: 打开及保存文件
- 第8章: 用动作命令在文档中移动
- 第9章: 在文件间跳转
- 第10章: 复制与粘贴
- 第11章: 宏
- 第12章: 按模式匹配及按原义匹配
- 第13章: 查找
- 第14章: 替换
- 第15章: global命令
- 第16章: 通过ctags建立索引并用其浏览源代码
- 第17章: 编译代码并通过Quickfix列表浏览错误信息
- 第18章: 通过grep,vimgrep以及其他工具对整个工程进行查找
- 第19章: 自动补全
- 第20章: 利用Vim的拼写检查器查找并更正拼写错误
- 第21章: 接下来干什么
- 附录A 根据个人喜好定制Vim
- 终端命令记录回放工具
- screen使用
- iftop查看网络流量
- dna螺旋
- shell下的俄罗斯方块
- 正经英语
- 有意思
- 问题记录
- python相关
- pip安装缺少openssl和libssl
- shell相关
- debian下执行数组变量报错
- 服务相关问题
- ububtu安装apache2报错
- php升级mongo拓展插件
- elk节点分片失败
- 操作系统相关问题
- 运维记录
- 数据库相关
- mongo3.4安装以及优化参数脚本
- mongodb版本升级及优化
- redis动态取消rdb保存配置
- 代理负载均衡相关
- haproxy匹配ua规则分离搜索引擎流量
- haproxy不记录某个域名或多个域名的日志
- 其他相关
- ImageMagick升级
- NFS强制卸载挂载
- 命令相关
- curl获取指定域名ip的状态码
- awk相关记录
- rsync传输限速指定ssh端口
- 操作系统相关
- centos使用阿里源
- ubuntu更换国内源
- 查看操作系统版本
- 内核优化
- Centos7修改语言为英文
- debian安装xfs格式化工具
- 查看磁盘信息
- debian的启动管理工具
- debian安装vmtools
- debian重启网卡不生效的解决
- 容器虚拟化
- Docker相关
- dokcer安装
- docker常用命令
- docker简单脚本
- Dockerfile相关
- 带ssh的debian镜像
- deocker创建简单镜像
- 官方文档
- docker-compose安装
- 报错
- docker镜像加速
- k8s相关
- k8s常用命令
- k8s名词解释
- k8s相关的 yaml文件
- VM相关
- 使用VMwareWorkstation批量操作linux虚拟机
- 在windows下使用shell批量操作Vmwarworkstation
- windows下批量操作虚拟机
- ESXI相关
- vsphere网络相关
- 小爱好
- 不方便展示