CentOS 7 源码安装MongoDB 4.0.28(全)

开源地址:https://github.com/mongodb/mongo

下载地址:https://www.mongodb.com/try/download/community

一、MongoDB介绍

1.简介

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

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2.优缺点

优点:

  • **文档存储(Document-Oriented):**数据以 BSON 格式(类似 JSON)存储,支持嵌套文档和数组,结构灵活;无需预先定义数据模式(Schema-free),非常适合处理复杂和动态变化的数据结构。
  • **高性能:**通过索引支持快速查询;原生支持水平扩展(sharding)和内存映射存储,提高读写性能。
  • **高可扩展性:**MongoDB 天然支持分布式架构,可以通过 分片(Sharding) 处理大规模数据和高并发请求。
  • **灵活查询:**支持丰富的查询语言,包括条件查询、正则表达式、聚合操作、地理空间查询等;聚合框架功能强大,可用于数据分析。
  • **支持副本集(Replica Set):**提供高可用性,通过多个节点实现自动故障转移和数据冗余。
  • **跨平台:**支持多种操作系统(如 Windows、Linux、macOS)和多种语言驱动(如 Python、Java、Node.js)。

缺点:

  • 相比关系型数据库,在传统事务处理和复杂联表查询场景中表现稍弱。
  • 占用存储空间较大,因为 BSON 格式会增加额外的元数据。

3.使用场景

  1. **实时分析:**如日志数据分析、IoT 数据处理。
  2. **内容管理系统:**适合存储非结构化和半结构化数据,如文章、评论等。
  3. **电商应用:**高并发访问场景,快速读取和存储购物车、订单等数据。
  4. **游戏开发:**存储玩家信息、实时状态和历史记录。

4.对比关系型数据库(如 MySQL)

特性 MongoDB MySQL
数据模型 文档
数据结构 灵活(无 Schema 或弱 Schema) 固定 Schema
水平扩展性 支持 Sharding 较复杂
事务支持 支持多文档 ACID 事务(4.0+ 版本) 强事务支持
复杂查询 支持多种查询和聚合 支持复杂 SQL 查询

二、安装MongoDB

这里安装的版本为 4.0.28

1.创建安装目录

mkdir -p /data/mongodb

2.下载并解压MongoDB源码包

下载 MongoDB 源码包,并指定解压到 /data/mongodb 目录下:

cd /usr/local/src
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.28.tgz
tar -xzf mongodb-linux-x86_64-rhel70-4.0.28.tgz -C /data/mongodb

3.创建软链接

进入 MongoDB 安装目录,为源码创建一个软链接到 mongodb 目录:

cd /data/mongodb
ln -s mongodb-linux-x86_64-rhel70-4.0.28 mongodb

4.创建数据目录

在软链接目录路径下创建 MongoDB 所需的数据目录:

mkdir /data/mongodb/mongodb/{
   conf,data,logs}

5.配置环境变量

设置 MySQL 可执行文件所在路径为环境变量:

cat >> /etc/profile <<'EOF'
# mongodb
export MONGODB_HOME=/data/mongodb/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
EOF

执行生效:

source /etc/profile

6.验证版本

配置完成后,可执行以下命令验证版本:

mongo --version

# 显示版本
MongoDB shell version v4.0.28
git version: af1a9dc12adcfa83cc19571cb3faba26eeddac92
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
    distmod: rhel70
    distarch: x86_64
    target_arch: x86_64

三、配置MongoDB

1.创建MongoDB配置文件

在软链接目录路径下创建 MongoDB 的主配置文件,添加以下内容:

cat > /data/mongodb/mongodb/conf/mongodb.conf <<'EOF'
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/mongodb/logs/mongodb.log

storage:
  dbPath: /data/mongodb/mongodb/data
  journal:
    enabled: true

processManagement:
  fork: true
  pidFilePath: /data/mongodb/mongodb/bin/mongodb.pid

net:
  bindIp: 0.0.0.0
  port: 27017
  maxIncomingConnections: 65536
  wireObjectCheck: true

operationProfiling:
  slowOpThresholdMs: 100
  mode: off

security:
  authorization: enabled
EOF

解释说明:

  • systemLog:日志配置。
    • destination: file:表示日志将记录到文件中。
    • logAppend: true:日志以追加模式写入,而不是覆盖之前的日志。
    • path:指定日志文件的路径,这里日志存储在 /data/mongodb/mongodb/logs/mongodb.log 中。
  • storage:存储配置。
    • dbPath: /data/mongodb/mongodb/data:指定 MongoDB 数据库文件存储的路径。
    • journal: enabled: true:启用持久化日志(Journal)。在发生意外崩溃时,Journal 日志可以用于数据恢复,提高数据安全性。
  • processManagement:进程管理配置。
    • fork: true:启动 MongoDB 时以守护进程模式运行(后台运行)。
    • pidFilePath: /data/mongodb/mongodb/bin/mongodb.pid:指定进程 ID 文件的路径,用于记录 MongoDB 的运行进程 ID。
  • net:网络配置。
    • bindIp: 0.0.0.0:指定 MongoDB 监听的 IP 地址,0.0.0.0 表示接受来自所有 IP 的连接。如果要限制访问,可以设置为特定的 IP(如 127.0.0.1)。
    • port: 27017:指定 MongoDB 的服务端口,默认是 27017
    • maxIncomingConnections: 65536:设置最大并发连接数为 65536,提高高并发处理能力。
    • wireObjectCheck: true:启用 BSON 数据格式检查,确保传输的数据格式正确。
  • operationProfiling:操作性能分析配置。
    • slowOpThresholdMs: 100:定义慢查询的阈值为 100 毫秒,超过此时间的操作会被标记为慢操作。
    • mode: off:禁用操作性能分析(Profiling)。可选值包括:
      • off:禁用。
      • slowOp:仅记录慢操作。
      • all:记录所有操作。
  • security:安全配置。
    • authorization: enabled:启用用户验证,必须提供有效的用户名和密码才能访问数据库。

2.配置启动服务

创建一个名为 mongodb.service 的 systemd 服务单元文件,用于管理 MongoDB 服务,存放于 /etc/systemd/system 目录下,并添加以下内容:

cat > /etc/systemd/system/mongodb.service <<'EOF'
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=root
Group=root
Environment="OPTIONS=-f /data/mongodb/mongodb/conf/mongodb.conf"
ExecStart=/data/mongodb/mongodb/bin/mongod $OPTIONS
ExecStop=/data/mongodb/mongodb/bin/mongod -shutdown $OPTIONS
PermissionsStartOnly=true
PIDFile=/data/mongodb/mongodb/bin/mongodb.pid
Type=forking

LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=64000
LimitNPROC=64000
LimitMEMLOCK=infinity
TasksMax=infinity
TasksAccounting=false

[Install]
WantedBy=multi-user.target
EOF

解释说明:

  • Environment:定义环境变量 OPTIONS,传递配置文件路径参数给 mongod
  • ExecStart:定义服务启动命令,mongod 加载配置文件路径参数启动 MongoDB。
  • ExecStop:定义服务停止命令,使用 -shutdown 选项安全关闭 MongoDB 实例。
  • PermissionsStartOnly:限制权限配置,仅在启动时生效。
  • PIDFile:指定存储 MongoDB 进程 ID 的文件路径,便于管理和监控。
  • Type:指定服务启动类型为 forking,表明 mongod 将在启动后创建一个子进程并以守护进程方式运行。
  • LimitFSIZE=infinity:文件大小无限制。
  • LimitCPU=infinity:CPU 使用时间无限制。
  • LimitAS=infinity:虚拟内存分配无限制。
  • LimitNOFILE=64000:最大打开文件数为 64000。
  • LimitNPROC=64000:最大进程数为 64000。
  • LimitMEMLOCK=infinity:内存锁定无限制。
  • TasksMax=infinity:任务数无限制。
  • TasksAccounting=false:禁用任务数计数。

3.启动MongoDB服务

配置完成后,启动 MongoDB 服务:

systemctl daemon-reload     # 加载systemd服务配置
systemctl start mongodb     # 启动mongodb服务
systemctl enable mongodb    # 设置开机自启服务

4.测试MongoDB

直接执行 mongo 命令测试是否能够成功进入:

[root@localhost /root]# mongo
MongoDB shell version v4.0.28
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session {
    "id" : UUID("62b61afe-6d23-43c9-9731-d48e6d57b717") }
MongoDB server version: 4.0.28
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> show dbs
> db
test
> quit()

5.创建admin管理员用户

MongoDB 在创建用户时,均需进入 admin 数据库里操作。

5.1 修改MongoDB配置文件

创建 MongoDB 用户前,需要先将 mongodb.conf 配置文件中的认证参数 authorization 改为 disabled

sed -i 's/authorization: enabled/authorization: disabled/g' /data/mongodb/mongodb/conf/mongodb.conf

修改完成后,重启 MongoDB 服务生效:

systemctl restart mongodb
5.2 登录并创建管理员用户

直接执行 mongo 命令登录到 MongoDB:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值