1.MongoDB简介
MongDB由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,是专为了可扩展性,高性能和高可用性而设计的数据库,是菲关系型数据库中功能最丰富,最像关系型数据库的,他支持的数据结构非常散,是类似json的bjson格式,因此开源存储比较复杂的数据类型。
1.1.MongoDB特点
高性能:MongoDB提供高性能的数据持久性,尤其是支持嵌入式数据模型减少数据库系统上的I/O操作,索引支持能快的查询,并且可以包括来嵌入式文档和组中的键。
I/O操作:索引支持能快的查询,并且可以包括来嵌入式文档和属组中的键
丰富的语言查询:MongoDB支持丰富的查询语言来支持读写操作(CRUD)以及数据汇总,文本搜索和地理空间索引。
高可用性:MongoDB的复制工具,成为副本集,提供自动故障转移和冗余,水平可扩展性:MongoDB提供了可扩展性,作为其核心功能的一部分,分片是将数据分析,在一组计算机上。
支持多种存储引擎:WiredTiger存储引擎和、MMAPv1存储引擎和LnMemory引擎。
2.MongoDB安装
2.1.安装方式
官方下载地址
https://www.mongodb.com/download-center/community
这里选用tar包的安装方式
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.13.taz
2.2.安装路径
Mongodb
[root@MongoDB]#yum install libcurl openssl -y
[root@MongoDB]#mkdir /opt/mongodb_cluster -p
[root@MongoDB]#cd /opt/mongodb_cluster
[root@MongoDB]#ln -s mongodb-linux-x86_64-3.6.1.3 mongodb
[root@MongoDB]#tar zxvf mongodb-linux-x86_64-3.6.1.3 -C /opt/mongodb_cluster
创建配置文件目录
[root@MongoDB]#mkdir /opt/mongo_clusetr/moogo_27017/{conf,logs,pid} -p
[root@MongoDB]#mkdir /data/mongo_clusetr/moogo_27017/{conf,logs,pid} -p
2.2.配置文件
systemlog:
destination:file #Mongodb 日志输出的目的地,指定一个file或者syslog,如果指定file,必须指定
logAppend:true #当实例重启时,不创建新的日志文件,在老的日志文件末尾继续添加
path:/opt/mongo_cluster/mongo_27017/logs/mongodb.log #日志路径
storage:
journal: #回滚日志
enabled:true
dbPath:/data/mongo_cluster/mongo_27017 #数据存储目录
directoryPerDB:true #默认false,不适用inmemory engine
wiredTiger:
englineConfig:
cacheSizeGB:1 #将用于所有数据缓存的最大小
directoryForIndexes:true #默认false索引集合storage.dbPath存储在数据单独子目录
collectionConifg:
blockCompressor:zlib
indexConfig:
prefixCompreesion:true
processManagement: #使用处理系统守护进程的控制处理
fork:true #后台运行
pidFilePath:/opt/mongo_cluster/mongo_27017/pid/mongod.pid #创建pid文件
net:
port:27017 #监听端口
bindIP:127.0.0.1,192.168.40.5 #绑定IP
systemLog:
destination: file //Mongodb日志输出为文件
logAppend: true //当实例重启时,不创建新的日志文件, 在老的日志文件末尾继续添加
path: /data/mongodb_cluster/mongodb_27017/logs/mongodb.log //日志路径
storage:
journal: //回滚日志,类似于mysql的binlog
enabled: true //开启回滚日志
dbPath: /data/mongodb_cluster/mongodb_27017/data //数据存储目录
directoryPerDB: true //默认,false不适用inmemoryengine
wiredTiger: //存储引擎
engineConfig:
cacheSizeGB: 1 //将用于所有数据缓存的大小
directoryForIndexes: true //默认false索引集合storage.dbPath存储在数据单独子目录,这里必须配置为true,否则所有库的数据文件都会存放在一个目录中
collectionConfig:
blockCompressor: zlib //开启压缩
indexConfig:
prefixCompression: true //开启索引
processManagement: //系统守护进程控制处理
fork: true //后台运行
pidFilePath: /data/mongodb_cluster/mongodb_27017/pid/mongod.pid //pid文件路径
net:
port: 27017 //监听端口
bindIp: 127.0.0.1,192.168.81.210 //绑定ip
2.3.启动服务
启动命令
[root@MongoDB]#mongodb/bin/mongod -f mongo_27017/conf/mongodb.conf
检查端口、服务
[root@MongoDB]#ps -ef|grep mongo
[root@MongoDB]#netstat -lntup|grep 27017
登录
[root@MongoDB]#mongodb/bin/mongo db01:27017
关闭服务
[root@MongoDB]#mongodb/bin/mongod -f mongo_27017/conf/mongodb.conf --shutdown
3.解决MongoDB警告
3.1.用户告警
我们登录之后是能看到一部分告警信息的,我们来消除警告。
优化启动用户警告
警告内容:2022-08-24T14:36:01.308+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
告警内容:这个警告内容就提示我们尽量不要用root直接启动,我们需要用普通用户启动
方法:创建一个普通用户,将MongoDB的部署目录赋权给普通用户,用普通用户启动即可
1.关闭MongoDB
[root@mongodb-1 /data/mongodb_cluster]# ./mongodb/bin/mongod -f mongodb_27017/conf/mongodb.yml --shutdown
2.创建用户
[root@mongodb-1 ~]# useradd mongo
[root@mongodb-1 ~]# echo "123456" | passwd --stdin mongo
3.赋权
[root@mongodb-1 ~]# chown -R mongo.mongo /data/mongodb_cluster/
4.登陆普通用户并配置环境变量
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ vim .bashrc
export PATH=/data/mongodb_cluster/mongodb/bin/:$PATH
[mongo@mongodb-1 ~]$ source .bashrc
5.启动MongoDB
[mongo@mongodb-1 ~]$ mongod -f /opt/mongodb_cluster/mongodb_27017/conf/mongodb.yml
about to fork child process, waiting until server is ready for connections.
forked process: 73835
child process started successfully, parent exiting
6.登陆MongoDB
[mongo@mongodb-1 ~]$ mongo
然后我们在本地查看报错信息是否已经消失。
3.2.优化大内存页警告
告警内容:** 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’
这是由于大内存设置了always,MongoDB建议使用never
[root@localhost mongodb_27017]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@localhost mongodb_27017]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb-1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
3.3.优化limit警告
告警内容:** WARNING: soft rlimits too low. rlimits set to 15324 processes, 65535 files. Number of processes should be at least 32767.5: 0.5 times number of files.
提示的是limt设置的打开文件数太低
调整limit(此方法是不重启机器的情况下生效)
cat > /etc/profile<<EOF
ulimit -f unlimited
ulimit -t unlimited
ulimit -v unlimited
ulimit -n 64000
ulimit -m unlimited
ulimit -u 64000
EOF
source /etc/profile
重启MongoDB服务
[root@mongodb-1 ~]# su - mongo
[mongo@mongodb-1 ~]$ mongod -f /opt/mongodb_cluster/mongodb_27017/conf/mongodb.yml --shutdown
[mongo@mongodb-1 ~]$ mongod -f /opt/mongodb_cluster/mongodb_27017/conf/mongodb.yml