查看原文
其他

Redhat 7.7 安装最新版 MongoDB 5.0.1 手册

JiekeXu JiekeXu DBA之路 2024-03-03

作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起看看 Redhat 7.7 安装最新版 MongoDB 5.0.1 手册,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

前   言

MongoDB 是一个基于分布式文件存储的数据库,2009 年发布,由 C++ 语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

 

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有

*面向集合存储,易存储对象类型的数据。

*模式自由。

*支持动态查询

*支持完全索引,包含内部对象。

*支持查询。

*支持复制和故障恢复。

*使用高效的二进制数据存储,包括大型对象(如视频等)。

*自动处理碎片,以支持云计算层次的扩展性。

*支持 Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

*文件存储格式为BSON(一种JSON的扩展)。

*可通过网络访问。

 

版本发布:2012年05月23日,MongoDB2.1 开发分支发布了! 该版本采用全新架构,包含诸多增强。

2012年06月06日,MongoDB 2.0.6 发布,分布式文档数据库。

2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。

2021 年 7 月 13 日,MongoDB 5.0 发布,引入了时间序列集合,可以有效地存储一段时间内的测量序列。

目前最新版本(2021 年 7 月 13 日)为 5.0.1,其他版本可查看如下归档链接。

https://www.mongodb.com/download-center/community/releases/archive

 

先解释下MongoDB 的版本号。MongoDB 的版本号分为 3 位:主版本.次版本.修订号。

· 主版本:当有重大更新时更新主版本号。例如支持WT引擎时主版本号从2升级到3;支持事务功能时从3升级到4;

· 次版本:发布新功能时更新次版本号。以奇数次版本号作为开发版,给大家尝鲜用,但不应用于生产环境;以偶数次版本号作为稳定版,适合生产环境使用。这就是为什么大家在下载网站上只看到4.0,4.2,4.4而无法找到4.1,4.3,4.5的原因。

· 修订号:每隔一定时间发布一次,包含近期内所有的bugfix。修订号不做任何功能上的更新,只用于发布bugfix。所以只要主/次版本号一致时,更新修订号可以完全向前兼容。

主/次版本基本上保持一年一次的更新频率,修订号不定期发布。

 

下面看一下 db-engines 排行榜,排名第五,流行度一直在不断上升,和 PG 两条曲线增势不相上下,深受大家的喜爱。

 


https://db-engines.com/en/ranking

 


 

软件准备


MongoDB 提供了Linux、Windows、macOS、源码编译等多种数据库的社区版和企业版,企业版收费,社区版免费,我们这里下载社区版即可。

 


wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.1.tgz

 

1 安装 MongoDB

当前系统版本:

[root@JiekeXu-Test ~]# uname -r3.10.0-1062.el7.x86_64[root@JiekeXu-Test ~]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 7.7 (Maipo)[root@JiekeXu-Test ~]#

1.1 上传解压缩安装包:

[root@JiekeXu-Test /]# mkdir -p /soft[root@JiekeXu-Test /]# cd soft[root@JiekeXu-Test soft]# lltotal 0[root@JiekeXu-Test soft]# lltotal 82980-rw-r--r-- 1 root root 84968629 Jul 27 16:20 mongodb-linux-x86_64-rhel70-5.0.1.tgz

1.2 创建mongo用户

# groupadd mongo# useradd -g mongo mongo# passwd mongo // mongo

1.3 修改ulimit系统参数

# vi /etc/security/limits.conf

添加以下内容

mongo soft nofile 64000mongo hard nofile 64000mongo soft nproc 32000mongo hard nproc 32000

1.4 创建目录

# mkdir /mongodb# chown -R mongo:mongo /mongodb# su - mongo$ cd /mongodb$ mkdir app conf data log pid[mongo@JiekeXu-Test mongodb]$ lltotal 0drwxrwxr-x 2 mongo mongo 6 Jul 27 17:07 appdrwxrwxr-x 2 mongo mongo 6 Jul 27 17:07 confdrwxrwxr-x 2 mongo mongo 6 Jul 27 17:07 datadrwxrwxr-x 2 mongo mongo 6 Jul 27 17:07 logdrwxrwxr-x 2 mongo mongo 6 Jul 27 17:07 pid[mongo@JiekeXu-Test mongodb]$ cd app[mongo@JiekeXu-Test app]$ lltotal 0[mongo@JiekeXu-Test app]$ cd /soft/[mongo@JiekeXu-Test soft]$ lltotal 82980-rw-r--r-- 1 root root 84968629 Jul 27 16:20 mongodb-linux-x86_64-rhel70-5.0.1.tgz[mongo@JiekeXu-Test soft]$ tar -zxvf /soft/mongodb-linux-x86_64-rhel70-5.0.1.tgz -C /mongodb/app/mongodb-linux-x86_64-rhel70-5.0.1/LICENSE-Community.txtmongodb-linux-x86_64-rhel70-5.0.1/MPL-2mongodb-linux-x86_64-rhel70-5.0.1/READMEmongodb-linux-x86_64-rhel70-5.0.1/THIRD-PARTY-NOTICESmongodb-linux-x86_64-rhel70-5.0.1/bin/install_compassmongodb-linux-x86_64-rhel70-5.0.1/bin/mongomongodb-linux-x86_64-rhel70-5.0.1/bin/mongodmongodb-linux-x86_64-rhel70-5.0.1/bin/mongos

 

1.5 创建软连接并配置环境变量


cd /mongodb/appln -s mongodb-linux-x86_64-rhel70-5.0.1 mongodb5


配置环境变量:在 ~/.bash_profile 里添加如下内容,并执行 source 生效:

MONGO_HOME=/mongodb/app/mongodb5PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MONGO_HOME/bin
source ~/.bash_profile --使环境变量生效

1.6 直接命令行后台启动MongoDB

[mongo@JiekeXu-Test log]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --logappend --port=27017 --forkabout to fork child process, waiting until server is ready for connections.forked process: 4903child process started successfully, parent exiting

查看版本信息:

 


这里有关于 transparent_hugepage 的警告信息,故将 transparent_hugepage 禁用掉,最佳实践也需要关闭 numa.重启操作系统生效。

vim /etc/default/grub在 quiet 和 引号指间加入如下内容:numa=off transparent_hugepage=never即倒数第二行改为如下:GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=rhel_jiekexu-test/root rd.lvm.lv=rhel_jiekexu-test/swap rhgb quiet numa=off transparent_hugepage=never"
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bakgrub2-mkconfig -o /boot/grub2/grub.cfgcat /etc/default/grubrebootcat /sys/kernel/mm/transparent_hugepage/enabledalways madvise [never]

 

[mongo@JiekeXu-Test ~]$ mongoMongoDB shell version v5.0.1connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("00fd0a51-d020-45f5-82d0-c8b6f5bc5f92") }MongoDB server version: 5.0.1================Warning: the "mongo" shell has been superseded by "mongosh",which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed inan upcoming release.We recommend you begin using "mongosh".For installation instructions, seehttps://docs.mongodb.com/mongodb-shell/install/================---The server generated these startup warnings when booting: 2021-07-27T17:48:33.189+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted 2021-07-27T17:48:33.189+08:00: This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip <address> to specify which IP addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning------ Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc).
The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring()---> db.version()5.0.1> quitfunction quit() { [native code]}> exitbye


2 MongoDB 的启动与关闭

2.1 启动 Mongo


MongoDB 的启动除了上面看到的使用—fork直接命令行后台启动之外,也可以将配置信息写入配置文件后,通过指定配置文件的方式来启动。


MongoDB的配置文件是/etc/mongo.conf,我们使用tgz包安装时不会创建该文件,如果通过yum方式安装会默认创建该文件。我们这里可以直接创建配置文件,并写入参数即可。

我们这里添加的参数如下:

[mongo@JiekeXu-Test conf]$ vim /mongodb/conf/mongo.conf#数据库数据存放目录dbpath=/mongodb/data#数据库日志存放目录logpath=/mongodb/log/mongodb.log#以追加的方式记录日志logappend = true#端口号 默认为27017port=27017#以后台方式运行进程fork=true#后台运行的进程号pidfilepath=/mongodb/pid/mongod.pid#开启用户认证auth=true#关闭http接口,默认关闭http端口访问#nohttpinterface=true#mongodb所绑定的ip地址,默认为127.0.0.1bind_ip = 0.0.0.0#启用日志文件,默认启用journal=true#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为falsequiet=true

 

2.1.1使用mongo.conf 启动MongoDB:

[mongo@JiekeXu-Test conf]$ mongod --config /mongodb/conf/mongo.confabout to fork child process, waiting until server is ready for connections.forked process: 2874child process started successfully, parent exiting[mongo@JiekeXu-Test conf]$ ps -ef|grep mongoroot 2659 2620 0 17:48 pts/1 00:00:00 su - mongomongo 2660 2659 0 17:48 pts/1 00:00:00 -bashmongo 2874 1 2 17:56 ? 00:00:00 mongod --config /mongodb/conf/mongo.confmongo 2923 2660 0 17:57 pts/1 00:00:00 ps -efmongo 2924 2660 0 17:57 pts/1 00:00:00 grep --color=auto mongo

 

2.2 关闭 Mongo


相对于启动,停止MongoDB 可以在系统层面和DB层面进行操作。


2.2.1 主机系统层面直接采用KILL


最基本的方法就是向 MongoDB 服务器发送一个 SIGINT 或者 SIGTERM 信号。如果服务器是作为前台进程运行在终端的,就直接按 Ctrl-C。否则,就用 kill这种命令发出信号。

假设 mongod的 PID是 2874,就可以kill -2 2874(SIGINT)或者kill 2874(SIGTERM)。
当 mongod 收到 SIGINT 或者 SIGTERM 时,会安全的退出。也就是说会等到当前运行的操作或者文件预分配完成(需要一些时间),关闭所有打开的连接,将缓存的数据刷新到磁盘,最后停止。

注意:千万不要向运行中的 MongoDB 发送 SIGKILL(kill -9)。这样会导致数据库直接关闭,上面讲到的步骤都将被忽略,这会使数据文件损毁。故很少使用操作系统层面的 kill。


2.2.2 DB 层面


DB 层面可以直接使用 shutdown 命令,“db.shutdownServer()"。这是管理命令,要在 admin 数据库下使用。

[mongo@JiekeXu-Test conf]$ mongoMongoDB shell version v5.0.1connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("994c07e0-9c56-4206-84b8-89d97d371cdb") }MongoDB server version: 5.0.1================Warning: the "mongo" shell has been superseded by "mongosh",which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed inan upcoming release.We recommend you begin using "mongosh".For installation instructions, seehttps://docs.mongodb.com/mongodb-shell/install/> use adminswitched to db admin> db.shutdownServer() //直接关闭会报错,如下所示。Error: shutdownServer failed: { "ok" : 0, "errmsg" : "not authorized on admin to execute command { shutdown: 1.0, lsid: { id: UUID(\"a26b8ede-062f-4f6c-8ec7-97c3be2ff139\") }, $db: \"admin\" }", "code" : 13, "codeName" : "Unauthorized"} :_getErrorWithCode@src/mongo/shell/utils.js:25:13DB.prototype.shutdownServer@src/mongo/shell/db.js:436:19@(shell):1:1##创建一个root账号> db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]});> db.auth('root','123456')1> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB## 修改密码> db.changeUserPassword('root','root');> db.shutdownServer()server should be down...>

或者命令行直接执行:

[mongo@JiekeXu-Test conf]$ mongod --config /mongodb/conf/mongo.confabout to fork child process, waiting until server is ready for connections.forked process: 3276child process started successfully, parent exiting[mongo@JiekeXu-Test conf]$[mongo@JiekeXu-Test conf]$ ps -ef|grep mongoroot 2659 2620 0 17:48 pts/1 00:00:00 su - mongomongo 2660 2659 0 17:48 pts/1 00:00:00 -bashmongo 3276 1 1 18:21 ? 00:00:01 mongod --config /mongodb/conf/mongo.confmongo 3335 2660 0 18:23 pts/1 00:00:00 ps -efmongo 3336 2660 0 18:23 pts/1 00:00:00 grep --color=auto mongo[mongo@JiekeXu-Test conf]$ mongod -f /mongodb/conf/mongo.conf --shutdownkilling process with pid: 3276[mongo@JiekeXu-Test conf]$ ps -ef|grep mongoroot 2659 2620 0 17:48 pts/1 00:00:00 su - mongomongo 2660 2659 0 17:48 pts/1 00:00:00 -bashmongo 3353 2660 0 18:23 pts/1 00:00:00 ps -efmongo 3354 2660 0 18:23 pts/1 00:00:00 grep --color=auto mongo

 


3 配置开机自启动服务

3.1 方法1:将开机命令添加到 rc.local 中

使用 root 用户可以直接将 mongodb 启动项目追加入 rc.local 保证 mongodb 在服务器开机时启动,比较简单粗暴,这里也是使用第一种方法。

[root@JiekeXu-Test ~]# echo "mongod --config /mongodb/conf/mongo.conf" >> /etc/rc.local

3.2 方法2:配置成系统服务

在 /etc/init.d 目录下创建 mongodb 文件,并添加如下内容:

[root@JiekeXu-Test ~]# cat /etc/init.d/mongodb#!/bin/sh##chkconfig: 2345 80 90#description: mongodb
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabledfiif test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defragfi
start() {/mongodb/app/mongodb5/bin/mongod -f /mongodb/conf/mongo.conf}
stop() {/mongodb/app/mongodb5/bin/mongod -f /mongodb/conf/mongo.conf --shutdown}
case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1esac[root@JiekeXu-Test ~]#[root@JiekeXu-Test ~]# chmod a+x /etc/init.d/mongodb[root@JiekeXu-Test ~]# chkconfig --add mongodb[root@JiekeXu-Test ~]# chkconfig mongodb on[root@JiekeXu-Test ~]# chkconfig --list
mongodb 0:off 1:off 2:on 3:on 4:on 5:on 6:offmysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:offnetconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:offnetwork 0:off 1:off 2:on 3:on 4:on 5:on 6:offrhnsd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@JiekeXu-Test ~]# service mongodb stopThere doesn't seem to be a server running with dbpath: /mongodb/data
[root@JiekeXu-Test ~]# ps -ef|grep mongoroot 43880 17422 0 11:49 pts/2 00:00:00 mongoroot 60509 41028 0 12:28 pts/3 00:00:00 grep --color=auto mongo
[root@JiekeXu-Test ~]# service mongodb startabout to fork child process, waiting until server is ready for connections.forked process: 60543child process started successfully, parent exiting
[root@JiekeXu-Test ~]# service mongodb stopkilling process with pid: 60543


4  客户端工具远程连接


Robo 3T 是一个跨平台的 MongoDB 管理工具,采用图形界面查询或者修改MongoDB。下载地址为:https://robomongo.org/download

 

Robo Studio 3T 是 MongoDB 的专业 IDE,商业收费软件,可下载 30 天试用版本,这里我们仅下载 Robo 3T 即可。

 


下载安装后,打开点击 create 创建连接,选择连接类型、连接名、IP 和 端口号,Set Name 账号、密码等信息连接即可。

mongo --host 192.168.75.128 --port 27017 -u root -p root --authenticationDatabase admin

 


 

下图是我生产环境集群连接示意图:

 




5 附录:MongoDB的配置参数含义

 

要配置mongodmongos使用配置文件,可使用--config选项或 -f选项指定配置文件,以下是一些参数的含义:

--quiet # 安静输出--port arg # 指定服务端口号,默认端口27017--bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP--logpath arg # 指定MongoDB日志文件,注意是指定文件不是目录--logappend # 使用追加的方式写日志--pidfilepath arg # PID File 的完整路径,如果没有设置,则没有PID文件--keyFile arg # 集群的私钥的完整路径,只对于Replica Set 架构有效--unixSocketPrefix arg # UNIX域套接字替代目录,(默认为 /tmp)--fork # 以守护进程的方式运行MongoDB,创建服务器进程--auth # 启用验证--cpu # 定期显示CPU的CPU利用率和iowait--dbpath arg # 指定数据库路径--diaglog arg # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads--directoryperdb # 设置每个数据库将被保存在一个单独的目录--journal # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里--journalOptions arg # 启用日志诊断选项--ipv6 # 启用IPv6选项--jsonp # 允许JSONP形式通过HTTP访问(有安全影响)--maxConns arg # 最大同时连接数 默认2000--noauth # 不启用验证--nohttpinterface # 关闭http接口,默认关闭27018端口访问--noprealloc # 禁用数据文件预分配(往往影响性能)--noscripting # 禁用脚本引擎--notablescan # 不允许表扫描--nounixsocket # 禁用Unix套接字监听--nssize arg (=16) # 设置信数据库.ns文件大小(MB)--objcheck # 在收到客户数据,检查的有效性,--profile arg # 档案参数 0=off 1=slow, 2=all--quota # 限制每个数据库的文件数,设置默认为8--quotaFiles arg # number of files allower per db, requires --quota--rest # 开启简单的rest API--repair # 修复所有数据库run repair on all dbs--repairpath arg # 修复库生成的文件的目录,默认为目录名称dbpath--slowms arg (=100) # value of slow for profile and console log--smallfiles # 使用较小的默认文件--syncdelay arg (=60) # 数据写入磁盘的时间秒数(0=never,不推荐)--sysinfo # 打印一些诊断系统信息--upgrade # 如果需要升级数据库
* Replicaton 参数----------------------------------------------------------------------------------fastsync # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步--autoresync # 如果从库与主库同步数据差得多,自动重新同步,--oplogSize arg # 设置oplog的大小(MB)
* 主/从参数----------------------------------------------------------------------------------master # 主库模式--slave # 从库模式--source arg # 从库 端口号--only arg # 指定单一的数据库复制--slavedelay arg # 设置从库同步主库的延迟时间

* Replica set(副本集)选项:----------------------------------------------------------------------------------replSet arg # 设置副本集名称
* Sharding(分片)选项----------------------------------------------------------------------------------configsvr # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb--shardsvr # 声明这是一个集群的分片,默认端口27018--noMoveParanoia # 关闭偏执为moveChunk数据保存

 

参数的更多说明可参考官方手册:

https://docs.mongodb.com/manual/refere】nce/configuration-options/ 

 


那么,今天也就到这里结尾了,以后有时间在继续学习 MongoDB 吧。如果此文对您有帮助,欢迎点赞、在看与转发,写作不易,坚持写作更不易,您的点赞、转发,举手之劳,便是对作者最大的支持,也能让更多的人受益,感谢!

———————————————————————————

公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107

———————————————————————————



2021年7月国产数据库排行榜:openGauss高歌猛进,GBase持续下跌

Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

ASM 管理的内部工具:KFED、KFOD、AMDU

性能优化|关于数据库历史性能问题的一道面试题

一线运维 DBA 五年经验常用 SQL 大全(二)

ORA-00349|激活 ADG 备库时遇到的问题

Oracle 轻量级实时监控工具 oratop

MySQL OCP 认证考试你知道吗?

Oracle 19C RAC 安装遇到的坑

国产数据库|TiDB 5.0 快速体验

Oracle 19C MAA 搭建指南

Oracle 每日一题系列合集

百花齐放的国产数据库


继续滑动看下一个

Redhat 7.7 安装最新版 MongoDB 5.0.1 手册

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存