MongDB入门安装及优化

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
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值