在ubuntu和多数linux发行版的包安装源中MongoDB默认的版本是2.4,但2.4所使用的存储引擎不支持collecitons级别的锁,只支持database级别的,所以在开发中2.4版本的mongodb写入时会造成锁表的现象,导致数据库性能低下,因此需要更新到3.4版本以上。
更新环境是 ubuntu 14.4 ,有两种方式更新,但是要注意先备份数据库,mongodump。。
方法一: apt install
1. 添加public key:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
2. 添加包源:
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
3. 更新:
sudo apt-get update
4. 安装:
sudo apt-get install -y mongodb-org
也可以指定版本: sudo apt-get install -y mongodb-org=3.6.0 mongodb-org-server=3.6.0 mongodb-org-shell=3.6.0 mongodb-org-mongos=3.6.0 mongodb-org-tools=3.6.0
方法二: 二进制包安装
1. 下载包:
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.0.tgz
2. 解压:
tar -zxvf mongodb-linux-x86_64-3.6.0.tgz
3. 创建目录:
mkdir -p mongodb
cp -R -n mongodb-linux-x86_64-3.6.0/ mongodb
4. export path:
export PATH=<mongodb-install-directory>/bin:$PATH
最好放在 bashrc 或者 profile里,不用每次都手动export
notes: 解决出现TPH warning的问题
在 /etc/init.d/ 目录下创建 一个文件 /etc/init.d/disable-transparent-hugepages
#!/bin/bash ### BEGIN INIT INFO # Provides: disable-transparent-hugepages # Required-Start: $local_fs # Required-Stop: # X-Start-Before: mongod mongodb-mms-automation-agent # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Disable Linux transparent huge pages # Description: Disable Linux transparent huge pages, to improve # database performance. ### END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo ‘never‘ > ${thp_path}/enabled echo ‘never‘ > ${thp_path}/defrag re=‘^[0-1]+$‘ if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]] then # RHEL 7 echo 0 > ${thp_path}/khugepaged/defrag else # RHEL 6 echo ‘no‘ > ${thp_path}/khugepaged/defrag fi unset re unset thp_path ;; esac
然后添加可执行权限:
sudo chmod 755 /etc/init.d/disable-transparent-hugepages
最后添加自启动即可:
sudo update-rc.d disable-transparent-hugepages defaults