MongoDB警告信息

Posted 东篱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB警告信息相关的知识,希望对你有一定的参考价值。

MongoDB警告信息:
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’.

报这个错是因为我的虚拟环境使用的是EXT4文件系统,官方不建议,但不影响使用

在Linux上运行MongoDB时,官方建议使用Linux内核版本2.6.36或更高版本,使用XFS或EXT4文件系统。 如果可能,最好使用XFS,因为它通常与MongoDB表现更好。

使用WiredTiger存储引擎,强烈建议使用XFS,以避免在使用EXT4与WiredTiger时可能发生的性能问题。

使用MMAPv1存储引擎,MongoDB在使用它们之前预先分配其数据库文件,并经常创建大文件。 因此,官方建议使用XFS或EXT4文件系统。 如果可能,请使用XFS,因为它通常与MongoDB表现更好。

2.WARNING: Access control is not enabled for the database.(数据库未启用访问控制)

报这个错是因为MongoDB需要有一个安全库来开启数据库访问控制

在MongoDB部署上启用访问控制会强制执行身份验证,要求用户识别自己。当访问启用了访问控制的MongoDB部署时,用户只能执行由其角色确定的操作。

  • 不使用访问控制模式开启mongdb

[email protected] ~]# mongod --dbpath /var/lib/mongo
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] MongoDB starting : pid=2421 port=27017 dbpath=/var/lib/mongo 64-bit host=localhost.localdomain
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] db version v3.4.9
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] git version: 876ebee8c7dd0e2d992f36a848ff4dc50ee6603e
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] modules: none
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] build environment:
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten]     distmod: rhel70
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten]     distarch: x86_64
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2017-09-27T03:06:14.853+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "/var/lib/mongo" } }
2017-09-27T03:06:14.971+0800 I -        [initandlisten] Detected data files in /var/lib/mongo created by the wiredTiger storage engine, so setting the active storage engine to wiredTiger.
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] 
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1455M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is always.
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is always.
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.634+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory /var/lib/mongo/diagnostic.data
2017-09-27T03:06:16.635+0800 I NETWORK  [thread1] waiting for connections on port 27017
2017-09-27T03:06:33.704+0800 I NETWORK  [thread1] connection accepted from 127.0.0.1:34808 #1 (1 connection now open)
2017-09-27T03:06:33.705+0800 I NETWORK  [conn1] received client metadata from 127.0.0.1:34808 conn1: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.9" }, os: { type: "Linux", name: "CentOS Linux release 7.3.1611 (Core) ", architecture: "x86_64", version: "Kernel 3.10.0-514.26.2.el7.x86_64" } }
2017-09-27T03:07:15.311+0800 I COMMAND  [conn1] command admin.system.users appName: "MongoDB Shell" command: insert { insert: "system.users", documents: [ { _id: "admin.myUserAdmin", user: "myUserAdmin", db: "admin", credentials: { SCRAM-SHA-1: { iterationCount: 10000, salt: "pUdmLObMsG3wKU7MZDFU1g==", storedKey: "wlCaAzPOS+u7CUqzMKxeZB+DFkE=", serverKey: "KwP12FF1ASziFPVstN8mLrPLg+A=" } }, roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ] } ninserted:1 keysInserted:1 numYields:0 reslen:44 locks:{ Global: { acquireCount: { r: 4, w: 4 } }, Database: { acquireCount: { W: 4 } }, Collection: { acquireCount: { w: 3 } } } protocol:op_query 145ms
2017-09-27T03:07:15.311+0800 I COMMAND  [conn1] command admin.$cmd appName: "MongoDB Shell" command: createUser { createUser: "myUserAdmin", pwd: "xxx", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 600000.0 } } numYields:0 reslen:22 locks:{ Global: { acquireCount: { r: 4, w: 4 } }, Database: { acquireCount: { W: 4 } }, Collection: { acquireCount: { w: 3 } } } protocol:op_command 202ms

 

  • 连接到instance
[[email protected] ~]# mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
Server has startup warnings: 
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] 
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-09-27T03:06:14.971+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-09-27T03:06:16.364+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is always.
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is always.
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:06:16.365+0800 I CONTROL  [initandlisten] 
> 

 

  • 在admin数据库中创建administrator 用户
> use admin
switched to db admin
> db.createUser(
...   {
...     user: "myUserAdmin",
...     pwd: "abc123",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...   }
... )
Successfully added user: {
    "user" : "myUserAdmin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
> exit
bye

 

  • 重启Mongodb
使用Ctrl+c退出原mongod

q^H
^C2017-09-27T03:07:25.685+0800 I CONTROL  [signalProcessingThread] got signal 2 (Interrupt), will terminate after current cmd ends
2017-09-27T03:07:25.685+0800 I NETWORK  [signalProcessingThread] shutdown: going to close listening sockets...
2017-09-27T03:07:25.685+0800 I NETWORK  [signalProcessingThread] closing listening socket: 6
2017-09-27T03:07:25.685+0800 I NETWORK  [signalProcessingThread] closing listening socket: 7
2017-09-27T03:07:25.685+0800 I NETWORK  [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2017-09-27T03:07:25.685+0800 I NETWORK  [signalProcessingThread] shutdown: going to flush diaglog...
2017-09-27T03:07:25.685+0800 I FTDC     [signalProcessingThread] Shutting down full-time diagnostic data capture
2017-09-27T03:07:25.687+0800 I STORAGE  [signalProcessingThread] WiredTigerKVEngine shutting down
2017-09-27T03:07:25.770+0800 I STORAGE  [signalProcessingThread] shutdown: removing fs lock...
2017-09-27T03:07:25.770+0800 I CONTROL  [signalProcessingThread] now exiting
2017-09-27T03:07:25.770+0800 I CONTROL  [signalProcessingThread] shutting down with code:0

 

  • 开启访问控制启动Mongod
[[email protected] ~]# mongod --auth --dbpath /var/lib/mongo
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] MongoDB starting : pid=2508 port=27017 dbpath=/var/lib/mongo 64-bit host=localhost.localdomain
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] db version v3.4.9
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] git version: 876ebee8c7dd0e2d992f36a848ff4dc50ee6603e
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] modules: none
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] build environment:
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten]     distmod: rhel70
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten]     distarch: x86_64
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2017-09-27T03:07:40.034+0800 I CONTROL  [initandlisten] options: { security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongo" } }
2017-09-27T03:07:40.054+0800 I -        [initandlisten] Detected data files in /var/lib/mongo created by the wiredTiger storage engine, so setting the active storage engine to wiredTiger.
2017-09-27T03:07:40.054+0800 I STORAGE  [initandlisten] 
2017-09-27T03:07:40.054+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-09-27T03:07:40.054+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-09-27T03:07:40.054+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1455M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] 
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] 
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is always.
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] 
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is always.
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] **        We suggest setting it to never
2017-09-27T03:07:40.420+0800 I CONTROL  [initandlisten] 
2017-09-27T03:07:40.422+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory /var/lib/mongo/diagnostic.data
2017-09-27T03:07:40.422+0800 I NETWORK  [thread1] waiting for connections on port 27017
2017-09-27T03:08:07.458+0800 I NETWORK  [thread1] connection accepted from 127.0.0.1:34810 #1 (1 connection now open)
2017-09-27T03:08:07.458+0800 I NETWORK  [conn1] received client metadata from 127.0.0.1:34810 conn1: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.9" }, os: { type: "Linux", name: "CentOS Linux release 7.3.1611 (Core) ", architecture: "x86_64", version: "Kernel 3.10.0-514.26.2.el7.x86_64" } }
2017-09-27T03:08:07.477+0800 I ACCESS   [conn1] Successfully authenticated as principal myUserAdmin on admin
2017-09-27T03:08:07.478+0800 I ACCESS   [conn1] Unauthorized: not authorized on admin to execute command { getLog: "startupWarnings" }
2017-09-27T03:08:07.665+0800 I ACCESS   [conn1] Unauthorized: not authorized on admin to execute command { replSetGetStatus: 1.0, forShell: 1.0 }
2017-09-27T03:08:26.104+0800 I -        [conn1] end connection 127.0.0.1:34810 (1 connection now open)
2017-09-27T03:08:29.697+0800 I NETWORK  [thread1] connection accepted from 127.0.0.1:34812 #2 (1 connection now open)
2017-09-27T03:08:29.697+0800 I NETWORK  [conn2] received client metadata from 127.0.0.1:34812 conn2: { application: { name: "MongoDB Shell" }, driver: { name: "MongoDB Internal Client", version: "3.4.9" }, os: { type: "Linux", name: "CentOS Linux release 7.3.1611 (Core) ", architecture: "x86_64", version: "Kernel 3.10.0-514.26.2.el7.x86_64" } }
2017-09-27T03:08:29.713+0800 I ACCESS   [conn2] Successfully authenticated as principal myTester on test
2017-09-27T03:08:29.714+0800 I ACCESS   [conn2] Unauthorized: not authorized on admin to execute command { getLog: "startupWarnings" }
2017-09-27T03:08:29.715+0800 I ACCESS   [conn2] Unauthorized: not authorized on admin to execute command { replSetGetStatus: 1.0, forShell: 1.0 }

 

  • 刚刚新建的用户myUserAdmin连接数据
[[email protected] ~]# mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.4.9
>
创建新数据库test并在其中创建用户myTester

> use test
switched to db test
> db.createUser(
...   {
...     user: "myTester",
...     pwd: "xyz123",
...     roles: [ { role: "readWrite", db: "test" },
...              { role: "read", db: "reporting" } ]
...   }
... )
Successfully added user: {
    "user" : "myTester",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        },
        {
            "role" : "read",
            "db" : "reporting"
        }
    ]
}
> exit
bye
  • 使用新建的myTester用户连接数据库
[[email protected] ~]# mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.4.9

 

3.WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.与4.WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.

这两个问题是CentOS7特有的,因为从CentOS7版本开始会默认启用Transparent Huge Pages(THP) 
Transparent Huge Pages(THP)本意是用来提升内存性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MariaDB、MongoDB等),否则可能会导致性能出现下降。

  • 查看THP状态
[[email protected] ~]#  cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[[email protected] ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
  • 修改系统配置
[[email protected] ~]# vim /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run chmod +x /etc/rc.d/rc.local to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/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


[[email protected] ~]# chmod +x /etc/rc.d/rc.local
  • 重启虚拟机
[[email protected] ~]# shutdown -r
  • 再次查看THP状态
[[email protected] ~]#  cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[[email protected] ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

已经改为了禁用THP

  • 启动mongod
[[email protected] ~]# mongod --auth --dbpath /var/lib/mongo
2017-09-27T03:40:50.174+0800 I CONTROL  [initandlisten] MongoDB starting : pid=2381 port=27017 dbpath=/var/lib/mongo 64-bit host=localhost.localdomain
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] db version v3.4.9
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] git version: 876ebee8c7dd0e2d992f36a848ff4dc50ee6603e
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] modules: none
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] build environment:
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten]     distmod: rhel70
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten]     distarch: x86_64
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2017-09-27T03:40:50.175+0800 I CONTROL  [initandlisten] options: { security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongo" } }
2017-09-27T03:40:50.195+0800 I -        [initandlisten] Detected data files in /var/lib/mongo created by the wiredTiger storage engine, so setting the active storage engine to wiredTiger.
2017-09-27T03:40:50.195+0800 I STORAGE  [initandlisten] 
2017-09-27T03:40:50.195+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2017-09-27T03:40:50.195+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2017-09-27T03:40:50.195+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1455M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-09-27T03:40:50.689+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-09-27T03:40:50.689+0800 I CONTROL  [initandlisten] 
2017-09-27T03:40:50.692+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory /var/lib/mongo/diagnostic.data
2017-09-27T03:40:50.693+0800 I NETWORK  [thread1] waiting for connections on port 27017
  • 进入数据库
[[email protected] ~]# mongo
MongoDB shell version v3.4.9
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.9
> 

 






以上是关于MongoDB警告信息的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB处理jumbo chunks警告信息

如何将代码片段存储在 mongodb 中?

Xcode8:"subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0" 的警告(代码片段

Mongodb 存储日志信息

详解MongoDB索引优化

在片段中我想点击如何显示警告对话框