一、MongoDB部署安装
第一步:安装依赖
yum install libcurl openssl -y
第二步:下载软件
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.14.tgz
第三步:解压软件
tar zxf mongodb-linux-x86_64-rhel70-4.0.14.tgz -C /opt/
第四步:生成软链接
cd /opt/
ln -s mongodb-linux-x86_64-rhel70-4.0.14 mongodb
第五步:生成配置文件
生成相关目录
mkdir -p /opt/mongo_27017/{conf,log,pid}
mkdir -p /data/mongo_27017
生成配置文件
cat >/opt/mongo_27017/conf/mongodb.conf<<EOF
systemLog:
destination: file #Mongodb ⽇志输出的⽬的地,指定⼀个file或者syslog,如果指定file,必须指定
logAppend: true #当实例重启时,不创建新的⽇志⽂件, 在⽼的⽇志⽂件末尾继续添加
path: /opt/mongo_27017/log/mongodb.log #⽇志路径
storage:
journal: #回滚⽇志
enabled: true
dbPath: /data/mongo_27017 #数据存储⽬录
directoryPerDB: true #默认,false不适⽤inmemoryengine
wiredTiger:
engineConfig: #将⽤于所有数据缓存的最⼤⼩
cacheSizeGB: 0.5
directoryForIndexes: true #默认false索引集合storage.dbPath存储在数据单独⼦⽬录
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement: #使⽤处理系统守护进程的控制处理
fork: true #后台运⾏
pidFilePath: /opt/mongo_27017/pid/mongod.pid #创建 pid ⽂件
net:
port: 27017 #监听端口
bindIp: 127.0.0.1,10.0.0.51 #绑定IP
EOF
第六步:命令加入环境变量
echo 'export PATH=/opt/mongodb/bin:$PATH' >> /etc/profile
source /etc/profile
第七步:生成systemd管理文件
生成管理用户
groupadd mongo -g 1000
useradd mongo -g 1000 -u 1000 -M -s /sbin/nologin
id mongo
生成systemd管理文件
cat >/usr/lib/systemd/system/mongod.service<<EOF
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongo
Group=mongo
ExecStart=/opt/mongodb/bin/mongod -f /opt/mongo_27017/conf/mongodb.conf
ExecStartPre=/usr/bin/chown -R mongo:mongo /opt/mongo_27017/
ExecStartPre=/usr/bin/chown -R mongo:mongo /data/mongo_27017/
PermissionsStartOnly=true
PIDFile=/opt/mongo_27017/pid/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# UNIX ulimit Settings - MongoDB Manual
[Install]
WantedBy=multi-user.target
EOF
第八步:启动mongo
systemctl daemon-reload
systemctl start mongod.service
ps -ef|grep mongo
第九步:登录mongo
mongo
二、MongoDB优化警告
1.内存不⾜
警告信息
** WARNING: The configured WiredTiger cache size is more than 80% of
available RAM.
解决方法
⽅法1;加⼤机器内存
⽅法2: 调⼩配置⽂件⾥缓存⼤⼩ cacheSizeGB: 0.5
2.没有开启访问控制
警告信息
** WARNING: Access control is not enabled for the database.
Read and write access to data and configuration is unrestricted.
解决方法
开启数据库安装认证功能
3.不建议以root⽤户运⾏
警告信息
** WARNING: You are running this process as the root user, which is not
recommended.
解决方法
⽅法1: 创建普通⽤户mongo,然后切换到mongo⽤户启动
⽅法2: 使⽤systemd⽅式,指定运⾏⽤户为普通⽤户mongo
4.关闭⼤内存⻚
警告信息
** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
We suggest setting it to 'never'
** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
We suggest setting it to 'never'
解决方法
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
5.rlimits太低
警告信息
** WARNING: soft rlimits too low. rlimits set to 7193 processes, 65535
files. Number of processes should be at least 32767.5 : 0.5 times number of
files.
解决方法
扩大文件最大打开数
cat > /etc/profile<<EOF
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
EOF
6.关闭监控服务体验
警告信息
To enable free monitoring, run the following command:
db.enableFreeMonitoring()
To permanently disable this reminder, run the following command:
db.disableFreeMonitoring()
解决方法
登录MongoDB执行
db.disableFreeMonitoring()