zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    在emacs上使用博客园的代码功能
    Programming Pearls笔记之一
    Virtualbox中Archlinux联网问题
    微信公众平台消息接口开发集成解决方案
    发送短信
    基于JMS的数据交换既数据互操作平台的解决方案
    Spring MVC基于注解的Junit测试
    获取设置一个字节某一个位的数值
    NotificationManager
    调用系统联系人列表
  • 原文地址:https://www.cnblogs.com/peter1994/p/8024620.html
Copyright © 2011-2022 走看看