MongoDB 3.6 安裝詳解


  在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM