MongoDB 4.0 启动报警及解决方法

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/81703707

初始安装的MongoDB启动通常会有以下4类报警信息:

1. WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 
2. WARNING: Access control is not enabled for the database. 
3. WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’. 
4. WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.

问题1: WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 

此报警属于操作系统文件格式的问题,不影响正常使用。

解答:
当在生产环境的Linux系统,内核版本至少为2.6.36,使用ext4或者xfs文件系统。若可能的话尽量搭配
xfs和mongoBD使用。
使用WiredTiger存储引擎强烈推荐XFS,可以避免ext4和wiredtiger搭配的性能问题;
使用MMAPv1存储引擎,MongoDB会在使用前预先分配数据文件并通常创建大的文件。
   也推荐使用XFS搭配MongoDB使用。
  
  通常使用xfs文件系统至少保持Linux kernel 版本为2.6.25及以上;
  若使用EXT4文件系统至少使用Linux kernel版本为2.6.28及以上;
  若使用CentOS和RHEL Linux kernel版至少为2.6.18-194。
  注释:在MongoDB4.0版本MMAPv1存储引擎已经废弃,将来会移除,推荐使用WiredTiger存储引擎。


参考:
https://docs.mongodb.com/manual/administration/production-notes/#kernel-and-file-systems

问题2:WARNING: Access control is not enabled for the database. 

此告警信息是说MongoDB需要有一个安全库来开启数据库访问控制,默认安装的启动的是mongod --dbpath /var/lib/mongo

此时无须用户认证登录的信息。

解决办法:
在MongoDB部署上启用访问控制会强制执行身份验证,要求用户识别自己。当访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"root",roles: [{role:"userAdminAnyDatabase", db: "admin" } ]})

创建用户和密码均为root,具有全部的权限。
重启mongoDB 使用用户名和密码登录:
#systemctl stop mongod
#mongod --auth --dbpath /var/lib/mongo
# mongo --username root --password root --port 27017 --authenticationDatabase admin
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 4.0.1
>

添加额外的账号信息:
use test
db.createUser(
  {
    user: "test",
    pwd: "test",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

登录测试验证:

# mongo --username test --password test --port 27017 --authenticationDatabase test
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 4.0.1

问题3:WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’. 
            WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.

这两个问题是CentOS7特有的,因为从CentOS7版本开始会默认启用Transparent Huge Pages(THP) 
Transparent Huge Pages(THP)本意是用来提升内存性能,但某些数据库厂商还是建议直接
关闭THP(比如说Oracle、MariaDB、MongoDB等),否则可能会导致性能出现下降。
--查看:
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

--修改系统配置加入如下配置重启操作系统:
# vim /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
 fi
 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
 fi
#shutdown -r
或者
#reboot

问题4:允许MongoDB远程访问。

#cat /etc/mongod.conf
...
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

默认的配置只允许本地访问,若允许所有主机访问可以将bindIp设置为0.0.0.0,但是这样并不安全,
可以开启外网访问密码验证。

net:
  port: 27017
  bindIp: 0.0.0.0
security:
  authorization: enabled

猜你喜欢

转载自blog.csdn.net/vkingnew/article/details/81703707