什么是mongoDB

MongoDB是一个开源的NoSQL数据库,采用了文档型存储方式。它是面向文档的数据库,意味着数据以文档的形式存储在数据库中,而不是以传统的行-列方式存储。每个文档是一个可自包含的数据结构,类似于JSON格式,使用BSON(Binary JSON)进行存储和传输。
MongoDB具有以下主要特点:

  1. 高性能:MongoDB使用了基于内存的数据存储和索引结构,提供了快速的数据读写能力。它还支持水平扩展,可以通过添加更多的服务器来增加数据库的吞吐量和容量。
  2. 灵活的数据模型:MongoDB的文档型存储方式使得数据模型更加灵活,可以根据实际需求动态地添加、修改或删除字段。这样可以更好地适应应用程序的需求变化,减少了数据迁移的复杂性。
  3. 强大的查询功能:MongoDB提供了丰富的查询功能,支持复杂的查询条件、分组、排序和聚合操作。它还支持全文搜索和地理位置查询,可以轻松地处理各种查询需求。
  4. 高可用性和可靠性:MongoDB支持主从复制和分片技术,可以实现数据的备份和故障转移。它还支持自动故障检测和恢复,保证了数据库的高可用性和可靠性。
  5. 安全性:MongoDB提供了多种安全机制,包括用户认证、角色管理和访问控制等。它还支持SSL加密传输,保障数据的安全性。
  6. 开发者友好:MongoDB的使用接口简单易用,支持多种编程语言,如Java、Python和Node.js等。它还提供了丰富的工具和驱动程序,方便开发人员进行开发和管理。

MongoDB的安装过程

1.第一步下载mongodb的安装包

官方下载地址:https://www.mongodb.com/try/download/community
图1
选择对应的操作系统,版本,还有文件类型,点击Copy Link获取相应的下载地址
比如我这个下载地址就是:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.11.tgz
在服务器上用wget命令直接下载:

wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.11.tgz

图2

下无完成后,解压缩

tar -zxvf mongodb-linux-x86_64-ubuntu2204-7.0.11.tgz

2.创建必要的目录

mkdir -p /usr/local/mongodb /usr/local/mongodb/data /usr/local/mongodb/logs

3.将解压后的mongdb文件移动到 创建mongodb必要文件夹的目录下

mv mongodb-linux-x86_64-ubuntu2204-7.0.11  /usr/local/mongodb

4.配置环境变量

vim ~/.bashrc
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

应用修改

source ~/.bashrc

5.添加 MongoDB 配置文件

常用的配置选项:

  1. bind_ip:指定MongoDB监听的IP地址。默认为127.0.0.1,表示只监听本地回环地址。如果你希望MongoDB能够通过网络访问,可以将该选项设置为0.0.0.0,表示监听所有可用的IP地址。
  2. port:指定MongoDB监听的端口号。默认为27017,通常不需要修改。
  3. dbpath:指定MongoDB数据文件存储的路径。默认为/var/lib/mongodb。
  4. logpath:指定MongoDB日志文件的路径。默认为/var/log/mongodb/mongod.log。
  5. logappend:指定是否在日志文件末尾追加日志。默认为false,表示每次启动MongoDB时,会清空日志文件。
  6. journal.enabled:指定是否启用Journaling,用于数据持久性和恢复。默认为true,建议保持默认值。
  7. storage.wiredTiger.engineConfig.cacheSizeGB:指定WiredTiger存储引擎的缓存大小,单位为GB。默认为总系统内存的一半,建议根据实际情况调整。
  8. security.authorization:指定是否启用身份验证。默认为disabled,表示不启用身份验证。在生产环境中,建议将该选项设置为enabled,并配置合适的用户和角色权限。
  9. replication.replSetName:指定复制集的名称。默认为空,表示不启用复制集。如果需要使用复制集功能,可以将该选项设置为一个非空的名称。
  10. net.maxIncomingConnections:指定MongoDB最大允许的入站连接数。默认为65536,根据实际情况进行调整。
  11. processManagement.fork:指定是否在后台运行MongoDB进程。默认为true,表示在后台运行。如果需要在前台运行,可以将该选项设置为false。
mkdir -p /usr/local/mongodb/etc
vim /usr/local/mongodb/etc/mongodb.conf

写入如下内容

dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
port=27017 
bind_ip=0.0.0.0
fork=true 
#auth=true 
#bind_ip=0.0.0.0

保存,启动服务

./mongod --config /usr/local/mongodb/etc/mongodb.conf

图3

6. 设置 MongoDB 作为系统服务

由于我在是WSL中安装的,在WSL 中,默认情况下没有 Systemd 等服务管理器,但可以通过一些手动配置来实现类似的功能。

使用 init.d 脚本

创建一个服务脚本,例如 /etc/init.d/mongodb

sudo nano /etc/init.d/mongodb

内容如下:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          mongodb
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

DAEMON_PATH="/usr/bin"
DAEMON=mongod
DAEMON_OPTS="--config /etc/mongod.conf"
NAME=mongod
DESC="MongoDB daemon"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case "$1" in
  start)
    printf "%-50s" "Starting $NAME..."
    cd $DAEMON_PATH
    $DAEMON $DAEMON_OPTS &
    if [ $? -eq 0 ]; then
      echo "OK"
    else
      echo "Fail"
    fi
  ;;
  stop)
    printf "%-50s" "Stopping $NAME..."
    pkill $NAME
    if [ $? -eq 0 ]; then
      echo "OK"
    else
      echo "Fail"
    fi
  ;;
  restart)
    $0 stop
    $0 start
  ;;
  status)
    pgrep $NAME > /dev/null
    if [ $? -eq 0 ]; then
      echo "$NAME is running"
    else
      echo "$NAME is not running"
    fi
  ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac

exit 0

保存并关闭文件。然后,使脚本可执行:

sudo chmod +x /etc/init.d/mongodb

添加到默认运行级别:

sudo update-rc.d mongodb defaults

9. 启动和管理服务

你可以使用以下命令来启动、停止和检查 MongoDB 服务状态:

sudo service mongodb start
sudo service mongodb stop
sudo service mongodb status

10. 验证 MongoDB 是否运行

检查 MongoDB 服务的状态,以确保其正确启动:

sudo service mongodb status

完成。