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", "[email protected]")
                .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": "[email protected]", "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 的稳定运行。
相关推荐
魔镜魔镜_谁是世界上最漂亮的小仙女几秒前
java-maven依赖管理
java·后端·全栈
Kim Jackson3 分钟前
我的世界Java版1.21.4的Fabric模组开发教程(十三)自定义方块状态
java·游戏·fabric
异常君8 分钟前
Java 双冒号(::)操作符实战解析与类型推断机制
java·代码规范·函数式编程
AA-代码批发V哥10 分钟前
Java多线程实现之Thread类深度解析
java
l1t18 分钟前
DeepSeek辅助实现的DuckDB copy to自定义函数
数据库·c++·人工智能
快乐肚皮20 分钟前
Spring Framework 6:核心升级特性
java·spring
老歌老听老掉牙21 分钟前
旋量理论:刚体运动的几何描述与机器人应用
python·算法·机器学习·机器人·旋量
懵逼的小黑子26 分钟前
mysql修改字段类型
数据库·mysql
&岁月不待人&34 分钟前
实现弹窗随键盘上移居中
java·kotlin
残*影40 分钟前
Spring Bean的初始化过程是怎么样的?
java·后端·spring