编译和安装MongoDB Tools

下文以MongoDB 3.6.13版本为例描述通过源码编译和安装MongoDB Tools的操作步骤,其他版本的MongoDB也可参考本章节。

以下命令中,“3.6.13”表示MongoDB的版本号。安装其他版本的MongoDB时,请将“3.6.13”替换为对应的MongoDB版本号。

  1. 下载go编译器源码包。

    1
    2
    cd /root
    wget https://dl.google.com/go/go1.13.5.linux-arm64.tar.gz
    

  2. 解压go源码包到“/usr/local”目录下。

    1
    2
    tar -C /usr/local -xzf go1.13.5.linux-arm64.tar.gz
    ls /usr/local/go
    

  3. 设置go编译器环境变量。

    1. 配置环境变量。
      1. 打开profile文件。
        1
        vim /etc/profile
        
      2. “i”进入编辑模式,在文件末尾加入内容。
        1
        2
        export PATH=$PATH:/usr/local/go/bin
        export GOROOT="/usr/local/go"
        
      3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    2. 使环境变量生效。
      1
      source /etc/profile
      
    3. 查看go编译器环境变量是否设置成功。
      1
      go env
      

  4. 查看go编译器版本。

    1
    2
    whereis go
    /usr/local/go/bin/go version
    

  5. 下载MongoDB Tools源码包。

    1
    2
    cd /root 
    wget https://github.com/mongodb/mongo-tools/archive/r3.6.13.tar.gz --no-check-certificate
    

    如果执行wget命令失败,请将github.com替换为github.com.cnpmjs.org后再执行下载命令。

  6. 解压MongoDB Tools源码包。

    1
    2
    3
    mv r3.6.13.tar.gz mongo-tools-r3.6.13.tar.gz
    tar -xvf mongo-tools-r3.6.13.tar.gz
    ll mongo-tools-r3.6.13
    

  7. 设置MongoDB Tools环境变量。

    1
    2
    3
    4
    cd /root/mongo-tools-r3.6.13
    chmod +x set_goenv.sh
    source set_goenv.sh
    ls
    

  8. 变更MongoDB Tools的编译目录。

    解压后的目录是mongo-tools-r3.6.13,需要进行如下操作更换目录结构,否则编译会报错。

    在mongo-tools-r3.6.13的同级目录下(本文档是“/root”)执行如下命令:

    1
    2
    3
    4
    cd /root
    mkdir -p mongodb-tools-3.6.13/src/github.com/mongodb
    mv mongo-tools-r3.6.13 mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools
    ls
    

  9. 下载解压gopacket,替换MongoDB Tools的gopacket。

    1. 下载gopacket。
      1
      2
      cd /root 
      wget https://github.com/google/gopacket/archive/master.zip --no-check-certificate
      

      如果执行wget命令失败,请将github.com替换为github.com.cnpmjs.org后再执行下载命令。

    2. 解压gopacket。
      1
      2
      unzip master.zip
      ll gopacket-master
      

    3. 替换MongoDB Tools的gopacket。
      1
      2
      3
      4
      ls /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/
      rm -rf /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/
      mv gopacket-master /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket
      ls /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/
      

  10. 建立GCC软链接。

    1. 查看GCC路径以及版本。
      1
      2
      whereis gcc
      /usr/bin/gcc --version
      

    2. 创建并查看GCC软链接。
      1
      2
      3
      mkdir -p /opt/mongodbtoolchain/v3/bin
      ln -s /usr/bin/gcc /opt/mongodbtoolchain/v3/bin/aarch64-mongodb-linux-gcc
      ll /opt/mongodbtoolchain/v3/bin/aarch64-mongodb-linux-gcc
      

      • aarch64-mongodb-linux-gcc:待创建的软链接文件名称。
      • /opt/mongodbtoolchain/v3/bin:软链接文件的存放路径。
      • /usr/bin/gcc:软链接文件所链接的源文件。
      • 如果需要删除软链接,请执行如下命令,其中“/opt/mongodbtoolchain/v3/bin/aarch64-mongodb-linux-gcc”为创建的软链接文件。
        rm -rf /opt/mongodbtoolchain/v3/bin/aarch64-mongodb-linux-gcc

  11. 编译安装MongoDB Tools。

    cd /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/
    ./build.sh

    查看生成的二进制可执行文件。

    1
    ll /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/bin
    

  12. 验证MongoDB Tools命令是否正常。本文以mongostat和mongoexport为例进行说明。

    1
    2
    3
    /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/bin/mongostat --version
    /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/bin/mongoexport --version
    /root/mongodb-tools-3.6.13/src/github.com/mongodb/mongo-tools/bin/mongodump --version