不使用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.confmongod -f ./mongodb/node2/mongod.confmongod -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
相关产品推荐
相关产品推荐

