【MonoDB】MongoDB自动化安装脚本


#!/bin/bash
soft_dir="/tmp"
soft_name="mongodb-linux-x86_64-rhel70-4.4.14.tgz"

#安装依赖
yum install libcurl openssl xz-libs wget -y

#下载安装包
cd $soft_dir
[ -f $soft_name ] || wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.14.tgz
tar xvf $soft_name -C /usr/local
cd /usr/local
ln -s mongodb-linux-x86_64-rhel70-4.4.14 mongodb


#设置环境变量
echo 'export PATH=/usr/local/mongodb/bin:$PATH' >> /etc/profile

#增加mongodb启动用户
groupadd mongod
useradd -r -g mongod mongod
echo "mongod" | passwd --stdin mongod

#内核参数配置
echo "mongo     hard    cpu     unlimited" >> /etc/security/limits.conf   
echo "mongo     soft    cpu     unlimited" >> /etc/security/limits.conf
echo "mongo     hard    memlock unlimited" >> /etc/security/limits.conf
echo "mongo     soft    memlock unlimited" >> /etc/security/limits.conf
echo "mongo     hard    nofile  65535    " >> /etc/security/limits.conf
echo "mongo     soft    nofile  65535    " >> /etc/security/limits.conf
echo "mongo     hard    nproc   192276   " >> /etc/security/limits.conf
echo "mongo     soft    nproc   192276   " >> /etc/security/limits.conf
echo "mongo     hard    fsize   unlimited" >> /etc/security/limits.conf
echo "mongo     soft    fsize   unlimited" >> /etc/security/limits.conf
echo "mongo     hard    as      unlimited" >> /etc/security/limits.conf
echo "mongo     soft    as      unlimited" >> /etc/security/limits.conf

# vi /root/.bashrc
echo "ulimit -u unlimited" >> /root/.bashrc


#调整网络参数
#编辑/etc/sysctl.conf或者/etc/sysctl.d/mongodb-sysctl.conf
echo "net.core.somaxconn = 4096"     >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl = 30" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time = 120" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /etc/sysctl.conf

##可以使用一下命令查看参数的值
##$ sysctl net.core.somaxconn
##net.core.somaxconn = 4096

#时间同步
(crontab -l;echo '0 1 * * * ntpdate -u 223.5.5.5 > /tmp/null') | crontab 


#创建数目录和日志目录,并给mongod权限
mkdir -p /data/mongo_data/data
mkdir -p /data/mongo_data/log
chown -R mongod:mongod /data/ /usr/local/mongodb

#设置配置文件
echo "systemLog:
  quiet: false
  destination: file
  logAppend: true
  path: /data/mongo_data/log/mongod.log
storage:
  dbPath: /data/mongo_data/data
  directoryPerDB: true

  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      directoryForIndexes: true
processManagement:
  fork: true # fork and run in background
  pidFilePath: /data/mongo_data/mongod.pid # location of pidfile
net:
  port: 27017
  bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
#security:
#  authorization: enabled
#  javascriptEnabled: false" > /etc/mongod.conf

chown mongod:mongod /etc/mongod.conf

#设置启动脚本

echo '
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=--quiet -f /etc/mongod.conf"
ExecStart=/usr/local/mongodb/bin/mongod $OPTIONS 
PIDFile=/data/mongo_data/mongod.pid
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
' > /usr/lib/systemd/system/mongod.service

chmod 644 /usr/lib/systemd/system/mongod.service
source /etc/profile
systemctl daemon-reload
systemctl enable mongod
systemctl restart mongod.service
systemctl status mongod.service


##安装工具
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.5.2.rpm
rpm -ivh mongodb-database-tools-rhel70-x86_64-100.5.2.rpm