前言:
对于一个初识MongoDB的初学者来说,第一步我想就是要搭建一个属于自己的MongoDB数据库实例,而单节点正是学习MongoDB的一个开端,此文我会尽量言简意赅,将部署过程描述清楚,不过我还是秉持这以部署生产库的态度来告诉你单节点如何部署。
准备:
-
RedHat 7.4
-
MongoDB 4.0.2
-
64-bit系统
注:3.4版本后MongoDB将不再支持32-bit 系统
步骤:
MongoDB的安装方式其实有很多---源码编译,yum安装,rpm包,tar包。这里我选择使用tar包安装,因为我觉得这样的方式部署起来方便快捷,并且后续维护也清晰明了。
1. 安装所需依赖
yum install libcurl openssl
2. 下载tar包
下载地址: https://www.mongodb.com/download-center?jmp=nav#community
3.解压tar包
将下载的tar包上传至服务器/apps路径下,如果不存在,请自行创建(注:目前以root登录)
root#cd /apps root#tar -zxvf mongodb-linux-x86_64-rhel70-4.0.2.tgz root# ls -l drwxrwxr-x. 3 mongo mongo 86 Dec 8 18:34 mongodb-linux-x86_64-rhel70-4.0.2 -rw-rw-r--. 1 mongo mongo 82140922 Oct 24 22:03 mongodb-linux-x86_64-rhel70-4.0.2.tgz root# mv mongodb-linux-x86_64-rhel70-3.2.10 mongodb ---为了方便后续使用,我们重命名文档
4.关闭防火墙
root#sudo systemctl stop firewalld root#sudo systemctl status firewalld
5. 关闭大内存页面
5.1先查看参数值:
root#sudo cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never root#sudo cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never
5.2 配置 transparent_hugepage 服务
root#sudo vim /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
5.3 对该服务授权,并设置开机启动
root#sudo chmod 755 /etc/init.d/disable-transparent-hugepages root#sudo chkconfig --add disable-transparent-hugepages
5.4 重启服务器后检查该参数是否已经生效:
root#sudo cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] root#sudo cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never]
注: transparent_hugepage 参数必须设置为 never ,否则,在登录 mongo shell 的时候会有如下告警:
官方的配置链接: Disable Transparent Huge Pages (THP)【 https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/ 】
6. 修改open files
有时候Linux系统默认的open files(文件句柄)是1024, 但是mongod官网建议是64000,并且确实需要修改要不然会被坑(很不幸,我遇到了)
6.1 查看到Linux系统的一些设置:
[mongo@mongodb01 ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31206 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
6.2 修改
可使用命令临时修改
ulimit -n 64000
上述方法服务器重启后将失效,永久办法, 修改/etc/security/limits.conf,添加mongo相关4条配置信息
root#vim /etc/security/limits.conf #@student - maxlogins 4 mongo soft nproc 64000 mongo hard nproc 64000 mongo soft nofile 64000 mongo hard nofile 64000 # End of file
注: 修改成功后重启mongod生效
7.创建用户mongo
root#groupadd mongogrp root#useradd -g mongogrp mongo
8.创建所需目录
root#mkdir /data root#chown -R mongo:mongogrp /data root#su mongo $mkdir -p /data/dbdata/r1 ---数据文件存放 $mkdir -p /data/logs/r1_logs ---创建日志文件路径 $mkdir -p /data/pid ---mongodb进程id存放
9.配置环境变量
$cd /home/mongo $vim .bash_profile
修改PATH变量
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/apps/mongodb/bin ---添加上mongo程序路径 export PATH
$source .bash_profile ---使环境变量生效
10.创建启动配置文件
虽然里面有很多复杂的参数,不要着急,咱先启动了再说,后续我会详细讲解各个常用参数的意义,因为我喜欢把配置文件mongodb.cnf(名字当然可以虽然叫)放在/etc目录下,你也可以放到其他地方,随意。
$sudo vim /etc/mongodb.cnf
填入如下内容
storage: dbPath: /data/dbdata/r1 #数据文件存放路径 journal: enabled: true commitIntervalMs: 100 directoryPerDB: true engine: wiredTiger wiredTiger: engineConfig: directoryForIndexes: true systemLog: quiet: false path: /data/logs/r1_logs/r1.log #log日志路径 destination: file logAppend: true processManagement: fork: true pidFilePath: /data/pid/r1.pid #进程ID存放 net: port: 27018 maxIncomingConnections: 3000 wireObjectCheck: true #security: # keyFile: /data/key/r1 # authorization: enabled #replication: # oplogSizeMB: 10240 # replSetName: rs1 #operationProfiling: # slowOpThresholdMs: 100 # mode: slowOp
编辑完后保存即可
赋予权限
$sudo chown -R mongo:mongo /etc/mongodb.cnf
11.启动数据库实例
$/apps/mongodb/bin/mongod -f /etc/mongodb.cnf
12.连接数据库
mongo 192.168.1.100:27018
我们可以通过检查是否可以连接到mongo shell以验证启动成功,当然也可以直接看进程
$ps -ef | grep mongod
13. 异常
如果在启动过程中有任何报错,请一定要学会查看log日志文件,一般情况下都是你缺少相应文件目录,或者某文件目录没有访问权限所致,细心,放心,一定可以成功的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31547523/viewspace-2214742/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31547523/viewspace-2214742/