配置disable-transparent-hugepages服务
vi /etc/init.d/disable-transparent-hugepages #!/bin/bash ### BEGIN INIT INFO # Provides: disable-transparent-hugepages # Required-Start: $local_fs # Required-Stop: # X-Start-Before: mongod mongodb-mms-automation-agent # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Disable Linux transparent huge pages # Description: Disable Linux transparent huge pages, to improve # database performance. ### END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo 'never' > ${thp_path}/enabled echo 'never' > ${thp_path}/defrag re='^[0-1]+$' if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]] then # RHEL 7 echo 0 > ${thp_path}/khugepaged/defrag else # RHEL 6 echo 'no' > ${thp_path}/khugepaged/defrag fi unset re unset thp_path ;; esac 对该服务授权,并设置开机自启动 sudo chmod 755 /etc/init.d/disable-transparent-hugepages sudo chkconfig --add disable-transparent-hugepages 重启服务器,并检查该参数是否已经生效 # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled always madvise [never] # cat /sys/kernel/mm/redhat_transparent_hugepage/defrag always madvise [never] 提高默认文件描述符和进程/线程数限制 Linux默认的文件描述符数和最大进程数对于MongoDB来说一般会太低。建议把这个数值设为64000。因为MongoDB服务器对每一个数据库文件以及每一个客户端连接都需要用到一个文件描述符。如果这个数字太小的话在大规模并发操作情况下可能会出错或无法响应。 你可以通过以下命令来修改这些值: ulimit -n 64000 ulimit -u 64000 配置用户与目录 MongoDB数据库默认情况下是没有做权限控制的,只要能够连接所开放的端口就能进行访问,而且拥有root级别的权限;对于生产环境而言是极不安全的,所以需要建立用户,进行授权控制。 # groupadd mongod # useradd mongod -g mongod # mkdir -p /u01/app/mongod/3.2.8/data # mkdir -p /u01/app/mongod/3.2.8/logs # chown -R mongod:mongod /u01/app/mongod/ # mv mongodb-linux-x86_64-rhel62-3.2.8.tgz /home/mongod/ # chown -R mongod:mongod /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8.tgz su - mongod $ tar -zxvf mongodb-linux-x86_64-rhel62-3.2.8.tgz 配置参数 vi /u01/app/mongod/3.2.8/mongod.conf dbpath=/u01/app/mongod/3.2.8/data bind_ip=192.168.0.178,localhost port=27001 oplogSize=5000 logpath=/u01/app/mongod/3.2.8/logs/mongod.log logappend=true fork=true 启动数据库,并创建超级管理员: $ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongod -f /u01/app/mongod/3.2.8/mongod.conf 创建管理与普通用户 登录mongodb数据库: $ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongo --port 27001 > use admin > db.createUser( { user:"Superadmin", pwd:"Password", roles:[{role:"root",db:"admin"}] } )关闭mongodb进程,并在mongod.conf 文件的最后加上参数auth=true。出于安全考虑,禁止使用27017端口。 --auth: 在mongod启动项中加入--auth,mongodb启动后,就可以完成授权模块的启用);
vi /u01/app/mongod/3.2.8/mongod.conf dbpath=/u01/app/mongod/3.2.8/data bind_ip=192.168.0.178,localhost port=27001 oplogSize=5000 logpath=/u01/app/mongod/3.2.8/logs/mongod.log logappend=true fork=true auth=true重新启动mongodb进程,创建普通用户。
> db.shutdownServer()
$ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongo --port 27001 -u Superadmin -p Password --authenticationDatabase admin MongoDB shell version: 3.2.8 > use admin switched to db admin > db.auth("Superadmin","Password") 1 > use iot switched to db iot > db.createUser( { user:"myiot", pwd:"abc123", roles:[{role:"readWrite",db:"iot"}] } ) $ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongo 192.168.0.178:27001/iot -u myiot -p abc123 $ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongo --port 27001 -u Superadmin -p Passw0rd#72 --authenticationDatabase admin创建集合索引
$ /home/mongod/mongodb-linux-x86_64-rhel62-3.2.8/bin/mongo 192.168.0.178:27001/iot -u myiot -p abc123# > db.ColdSignal.createIndex({ "recordDate" : 1, "deviceCode" : 1 }); > db.ColdSignal.createIndex({deviceCode:1,recordDate:1},{background:true,unique:true}) URI连接串格式 应用程序与数据库之间的连接串配置
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
文章结束!
相关资源:python入门教程(PDF版)