MongoDB安装部署
0.安装依赖
[root@redis01 ~]# yum install -y libcurl openssl
1.上传或下载包
#下载地址:https://www.mongodb.com/download-center/community
[root@redis01 ~]# rz mongodb-linux-x86_64-3.6.13.tgz
2.解压包
[root@redis01 ~]# tar xf mongodb-linux-x86_64-3.6.13.tgz -C /usr/local/
[root@redis01 ~]# ln -s /usr/local/mongodb-linux-x86_64-3.6.13 /usr/local/mongodb
3.配置
#创建目录
[root@redis01 ~]# mkdir /server/mongo_27017/{conf,logs,pid,data} -p
#配置
[root@redis01 ~]# vim /server/mongo_27017/conf/mongodb.conf
systemLog:
destination: file
logAppend: true
path: /server/mongo_27017/logs/mongodb.log
storage:
journal:
enabled: true
dbPath: /server/mongo_27017/data
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
pidFilePath: /server/mongo_27017/pid/mongod.pid
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.91
#配置详解
#日志相关
systemLog:
#以文件格式存储
destination: file
#每次重启,不生成新文件,每次都追加到文件
logAppend: true
#指定文件路径
path: /server/mongo_27017/logs/mongodb.log
#数据部分
storage:
#数据回滚。类似于mysql的undolog
journal:
enabled: true
#数据目录
dbPath: /server/mongo_27017/data
#默认 false,不适用 inmemory engine
directoryPerDB: true
#存储引擎
wiredTiger:
#存储引擎设置
engineConfig:
#想把数据存到缓存,缓存的大小
cacheSizeGB: 1
#设置一个库就是一个目录,关闭就全放到一个目录下,很乱
directoryForIndexes: true
#压缩相关
collectionConfig:
blockCompressor: zlib
#索引压缩(与压缩一起使用)
indexConfig:
prefixCompression: true
#守护进程的模式
processManagement:
fork: true
#指定pid文件
pidFilePath: /server/mongo_27017/pid/mongod.pid
#指定端口和监听地址
net:
port: 27017
bindIp: 127.0.0.1,10.0.0.91
4.启动
[root@redis01 ~]# /usr/local/mongodb/bin/mongod -f /server/mongo_27017/conf/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 11547
child process started successfully, parent exiting
#验证启动
[root@redis01 ~]# ps -ef | grep mongo
root 11547 1 6 08:48 ? 00:00:00 /usr/local/mongodb/bin/mongod -f /server/mongo_27017/conf/mongodb.conf
5.配置环境变量
[root@redis01 ~]# vim /etc/profile.d/mongo.sh
export PATH="/usr/local/mongodb/bin:$PATH"
[root@redis01 ~]# source /etc/profile
四、mongo登录警告处理
1.警告一
#访问设置没有被允许
WARNING: Access control is not enabled for the database.
#解决方式:开启安全认证
[root@redis01 ~]# vim /server/mongo_27017/conf/mongodb.conf
security:
authorization: enabled
2.警告二
#以root用户运行了
WARNING: You are running this process as the root user, which is not recommended.
#解决方式:使用普通用户启动
1.先关闭mongodb
[root@redis01 ~]# mongod -f /server/mongo_27017/conf/mongodb.conf --shutdown
2.创建mongo用户
[root@redis01 ~]# useradd mongo
[root@redis01 ~]# echo '123456'|passwd --stdin mongo
Changing password for user mongo.
passwd: all authentication tokens updated successfully.
3.授权目录
[root@redis01 ~]# chown -R mongo.mongo /usr/local/mongodb/
[root@redis01 ~]# chown -R mongo.mongo /server/mongo_27017/
4.重新启动
[root@redis01 ~]# su - mongo
Last login: Wed May 27 09:07:51 CST 2020 on pts/1
[mongo@redis01 ~]$ mongod -f /server/mongo_27017/conf/mongodb.conf
3.警告三、四
#你使用的是透明大页,可能导致mongo延迟和内存使用问题。
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 修复该问题
#配置之后重启
[root@redis01 ~]# su - mongo
[mongo@redis01 ~]$ mongod -f /server/mongo_27017/conf/mongodb.conf --shutdown
[mongo@redis01 ~]$ mongod -f /server/mongo_27017/conf/mongodb.conf
#这样设置是临时的,我们要把他加到 rc.local,在授个权
4.警告五
#rlimits太低,MongoDB的软件进程被限制了,MongoDB希望自己是最少rlimits 32767.5
WARNING: soft rlimits too low. rlimits set to 7837 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
#解决方法:
[root@redis01 ~]# vim /etc/profile
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 65535
ulimit -m unlimited
ulimit -u 65535
[root@redis01 ~]# vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
root soft nproc unlimited
[root@redis01 ~]# source /etc/profile