You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用MongoDB Atlas搭建本地MongoDB集群 求Java实践参考资料

本地搭建MongoDB多节点集群(非Atlas)实践指南

一、单机器模拟多节点集群步骤

  • 先创建多个独立的数据目录(避免数据混淆):
    Linux/macOS:mkdir -p ./mongodb/node1/data ./mongodb/node2/data ./mongodb/node3/data
    Windows:md .\mongodb\node1\data .\mongodb\node2\data .\mongodb\node3\data
  • 为每个节点编写配置文件,比如node1/mongod.conf:
net:
  port: 27017
storage:
  dbPath: ./mongodb/node1/data
  journal:
    enabled: true
replication:
  replSetName: "myLocalReplicaSet"

复制两份配置给node2和node3,分别修改port为27018、27019,dbPath对应各自的目录。

  • 逐个启动节点:
    mongod -f ./mongodb/node1/mongod.conf
    mongod -f ./mongodb/node2/mongod.conf
    mongod -f ./mongodb/node3/mongod.conf
  • 初始化副本集:
    打开新终端,连接第一个节点:mongo --port 27017
    执行初始化命令:
rs.initiate({
  _id: "myLocalReplicaSet",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" }
  ]
})
  • 验证集群状态:执行rs.status(),查看所有节点的stateStr是否正常(主节点显示PRIMARY,从节点显示SECONDARY)

二、Java连接本地集群代码示例

使用MongoDB官方同步驱动,代码如下:

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;

public class LocalMongoClusterDemo {
    public static void main(String[] args) {
        // 连接字符串必须指定副本集名称,否则只会连单个节点
        String clusterConnStr = "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=myLocalReplicaSet";
        
        try (MongoClient client = MongoClients.create(clusterConnStr)) {
            MongoDatabase db = client.getDatabase("dev_db");
            System.out.println("成功连接本地MongoDB集群,当前数据库:" + db.getName());
        } catch (Exception e) {
            System.err.println("连接失败:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

Maven依赖配置(pom.xml):

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.11.1</version> <!-- 替换为最新稳定版本 -->
</dependency>

三、关键注意事项

  • 副本集要求至少3个节点(1主2从,或2主1仲裁节点),单机器模拟时务必保证每个节点的端口、数据目录独立
  • 所有节点的replSetName必须完全一致,否则无法加入同一集群
  • Java连接时,连接字符串必须包含replicaSet参数,驱动才能自动识别集群拓扑
  • 如果需要测试分片集群(比副本集更复杂),可以先从副本集入手,再逐步添加分片配置

四、官方文档核心要点

MongoDB官方文档里有完整的本地集群搭建教程,重点关注:

  • 副本集的基本架构和选举机制
  • 单机器模拟多节点的配置细节
  • Java驱动连接集群的参数说明

内容的提问来源于stack exchange,提问作者Javier Robles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:25:26