MongoDB 单机和集群环境部署教程

目录

    • [一、MongoDB 单机环境部署](#一、MongoDB 单机环境部署)
      • [1. 环境准备](#1. 环境准备)
      • [2. 安装 MongoDB](#2. 安装 MongoDB)
        • [2.1 在 Ubuntu 上安装 MongoDB](#2.1 在 Ubuntu 上安装 MongoDB)
        • [2.2 在 CentOS 上安装 MongoDB](#2.2 在 CentOS 上安装 MongoDB)
        • [2.3 启动 MongoDB 服务](#2.3 启动 MongoDB 服务)
        • [2.4 验证 MongoDB 安装](#2.4 验证 MongoDB 安装)
        • [2.5 MongoDB 基本安全设置](#2.5 MongoDB 基本安全设置)
      • [3. 单机部署注意事项](#3. 单机部署注意事项)
    • [二、MongoDB 集群环境部署](#二、MongoDB 集群环境部署)
      • [1. 环境准备](#1. 环境准备)
      • [2. MongoDB Replica Set 部署](#2. MongoDB Replica Set 部署)
        • [2.1 配置每个节点的 MongoDB 实例](#2.1 配置每个节点的 MongoDB 实例)
        • [2.2 配置 Replica Set](#2.2 配置 Replica Set)
      • [3. 集群部署注意事项](#3. 集群部署注意事项)
    • [三、MongoDB 使用案例](#三、MongoDB 使用案例)
      • [1. Java 示例:使用 MongoDB Java Driver](#1. Java 示例:使用 MongoDB Java Driver)
        • [1.1 添加 Maven 依赖](#1.1 添加 Maven 依赖)
        • [1.2 编写 Java 代码](#1.2 编写 Java 代码)
      • [2. Python 示例:使用 `pymongo` 连接 MongoDB](#2. Python 示例:使用 pymongo 连接 MongoDB)
        • [2.1 安装 `pymongo`](#2.1 安装 pymongo)
        • [2.2 编写 Python 代码](#2.2 编写 Python 代码)
    • 总结

一、MongoDB 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7),也可在 Windows 上安装 MongoDB。
  • MongoDB 版本:MongoDB 5.0(推荐使用最新稳定版本)。
  • 硬件要求:至少 2 GB 内存和 20 GB 的硬盘空间。

2. 安装 MongoDB

2.1 在 Ubuntu 上安装 MongoDB
  1. 导入 MongoDB 公共 GPG 密钥

    bash 复制代码
    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
  2. 创建 MongoDB 源列表文件

    bash 复制代码
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
  3. 更新本地包数据库并安装 MongoDB

    bash 复制代码
    sudo apt update
    sudo apt install -y mongodb-org
2.2 在 CentOS 上安装 MongoDB
  1. 创建 MongoDB 的 YUM 源文件

    bash 复制代码
    echo "[mongodb-org-5.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/5.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
  2. 安装 MongoDB

    bash 复制代码
    sudo yum install -y mongodb-org
2.3 启动 MongoDB 服务
bash 复制代码
sudo systemctl start mongod
sudo systemctl enable mongod
2.4 验证 MongoDB 安装

检查 MongoDB 服务状态:

bash 复制代码
sudo systemctl status mongod
2.5 MongoDB 基本安全设置
  1. 设置管理员用户

    登录 MongoDB shell:

    bash 复制代码
    mongo

    切换到 admin 数据库,并创建管理员用户:

    javascript 复制代码
    use admin
    db.createUser(
      {
        user: "admin",
        pwd: "adminpassword",
        roles: [ { role: "root", db: "admin" } ]
      }
    )
  2. 启用认证

    编辑 MongoDB 配置文件 /etc/mongod.conf,启用认证:

    yaml 复制代码
    security:
      authorization: "enabled"

    重启 MongoDB 服务:

    bash 复制代码
    sudo systemctl restart mongod

3. 单机部署注意事项

  • 安全性:启用用户认证,并限制外部访问 IP。
  • 备份:定期备份数据库,防止数据丢失。
  • 性能优化 :根据使用场景调整内存和缓存设置,如 wiredTigerCacheSizeGB
  • 日志管理:配置日志以便于监控和调试。

二、MongoDB 集群环境部署

1. 环境准备

  • 多台服务器:至少 3 台,用于配置 MongoDB Replica Set。
  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)。
  • MongoDB 版本:MongoDB 5.0。

2. MongoDB Replica Set 部署

2.1 配置每个节点的 MongoDB 实例

按照单机环境的安装步骤,在每个节点上安装 MongoDB。

2.2 配置 Replica Set
  1. 编辑 MongoDB 配置文件

    在每台服务器上编辑 /etc/mongod.conf,配置 Replica Set:

    yaml 复制代码
    replication:
      replSetName: "rs0"
  2. 启动 MongoDB 服务

    bash 复制代码
    sudo systemctl restart mongod
  3. 初始化 Replica Set

    在主节点上启动 MongoDB shell:

    bash 复制代码
    mongo

    初始化 Replica Set:

    javascript 复制代码
    rs.initiate({
      _id: "rs0",
      members: [
        { _id: 0, host: "192.168.1.1:27017" },
        { _id: 1, host: "192.168.1.2:27017" },
        { _id: 2, host: "192.168.1.3:27017" }
      ]
    })
  4. 检查 Replica Set 状态

    javascript 复制代码
    rs.status()

3. 集群部署注意事项

  • 网络配置:确保所有节点之间的网络连接稳定,且防火墙允许相应端口通信。
  • 节点配置一致性 :确保每个节点的配置文件一致,特别是 replSetNamebindIp
  • 安全性:启用用户认证,并使用 SSL 进行加密通信。
  • 故障恢复:配置仲裁节点(arbiter)以防止脑裂现象,并定期监控节点状态。

三、MongoDB 使用案例

1. Java 示例:使用 MongoDB Java Driver

1.1 添加 Maven 依赖

pom.xml 中添加 MongoDB Java Driver 依赖:

xml 复制代码
<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>4.4.0</version>
    </dependency>
</dependencies>
1.2 编写 Java 代码
java 复制代码
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;

public class MongoDBExample {
    public static void main(String[] args) {
        MongoClient mongoClient = MongoClients.create("mongodb://admin:adminpassword@localhost:27017");
        MongoDatabase database = mongoClient.getDatabase("testdb");
        MongoCollection<Document> collection = database.getCollection("testcollection");

        Document doc = new Document("name", "John Doe")
                .append("email", "john.doe@example.com")
                .append("age", 29);
        collection.insertOne(doc);

        Document myDoc = collection.find().first();
        System.out.println(myDoc.toJson());

        mongoClient.close();
    }
}

2. Python 示例:使用 pymongo 连接 MongoDB

2.1 安装 pymongo
bash 复制代码
pip install pymongo
2.2 编写 Python 代码
python 复制代码
from pymongo import MongoClient

def query_database():
    client = MongoClient("mongodb://admin:adminpassword@localhost:27017/")
    db = client["testdb"]
    collection = db["testcollection"]

    doc = {"name": "John Doe", "email": "john.doe@example.com", "age": 29}
    collection.insert_one(doc)

    result = collection.find_one()
    print(result)

    client.close()

if __name__ == "__main__":
    query_database()

总结

通过以上步骤,我们完成了 MongoDB 的单机和集群环境部署,并实现了 Java 和 Python 的简单连接示例。MongoDB 作为一款 NoSQL 数据库,具备高可扩展性和灵活的数据模型,适用于多种应用场景。

部署过程中的注意事项

  • 安全性:启用用户认证、IP 限制和 SSL 加密,确保数据安全。
  • 性能优化:根据需求调整缓存、索引等配置,提高性能。
  • 备份和恢复:定期备份数据库,并测试恢复过程,防止数据丢失。
  • 监控和日志管理:配置监控工具和日志系统,及时发现和解决问题,保障 MongoDB 的稳定运行。
相关推荐
CoderIsArt31 分钟前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
深度学习lover31 分钟前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck1 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei1 小时前
java的类加载机制的学习
java·学习
API快乐传递者2 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
师太,答应老衲吧3 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616883 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端