mongo主从

主库

/opt/mongodb-linux-i686-2.6.5/bin/mongod --master --dbpath=/opt/mongodb-linux-i686-2.6.5/data --logpath=/opt/mongodb-linux-i686-2.6.5/logs/mongodb.log --logappend --journal --fork 


从库

/opt/mongodb-linux-i686-2.6.5/bin/mongod --slave --source 192.168.1.120:27017 --dbpath=/opt/mongodb-linux-i686-2.6.5/data --logpath=/opt/mongodb-linux-i686-2.6.5/logs/mongodb.log --logappend --fork 



转载于:https://my.oschina.net/u/877759/blog/341363

<think>嗯,用户之前问过关于Spring Boot和MongoDB主从配置的问题,现在需要提供一个解决方案或使用指南。首先,我需要回忆一下MongoDB的副本集(Replica Set)是如何工作的。副本集由多个节点组成,包括主节点和从节点,主节点负责处理写操作,从节点复制数据并提供读操作。用户可能希望配置Spring Boot应用连接到这样的副本集,确保高可用性和数据冗余。 接下来,我得考虑Spring Boot中如何配置MongoDB的连接。通常,在application.properties文件中配置spring.data.mongodb.uri,但需要正确设置副本集的参数。比如,URI应该包含多个节点的主机和端口,以及副本集的名称。例如,mongodb://host1:27017,host2:27017,host3:27017/database?replicaSet=myReplicaSet。这一步很重要,因为如果URI配置不正确,应用可能无法正确连接到副本集,导致连接失败。 然后,用户可能需要具体的步骤指南。我应该分步骤说明:首先是搭建MongoDB副本集,这包括安装MongoDB、配置每个节点的mongod.conf文件,设置replication部分,指定副本集名称。然后初始化副本集,使用mongo shell执行rs.initiate()命令,添加其他节点。这部分可能需要详细说明,特别是对于不熟悉MongoDB管理的开发者来说。 接着是Spring Boot的配置部分,除了URI之外,可能需要调整读写偏好(Read Preference)。比如,设置读操作主要在从节点进行,以分担主节点的压力。这可以通过在URI中添加readPreference=secondaryPreferred参数来实现。同时,还要提到版本兼容性,确保Spring Data MongoDB的版本与MongoDB服务器版本兼容,避免驱动问题。 另外,用户可能关心如何验证配置是否成功。可以建议在应用中启用日志,查看是否成功连接到副本集的各个节点。或者插入测试数据,检查数据是否同步到所有从节点。这部分能帮助用户确认他们的配置是否正确有效。 可能还需要提到一些常见问题,比如网络问题导致节点无法通信,或者副本集名称不匹配导致的连接错误。此外,安全方面的考虑,比如启用身份验证,配置用户名和密码,以及使用SSL加密连接,这些也是实际部署中需要注意的地方。 最后,生成的相关问题需要围绕用户可能的后续疑问,比如读写分离配置、故障转移处理、性能优化以及安全配置。这些问题可以帮助用户进一步深入理解和解决更复杂的情况。</think>### Spring Boot MongoDB副本集配置指南 #### 一、核心配置原理 MongoDB副本集通过$n$节点架构实现高可用性(通常建议至少3节点),主节点处理写操作,从节点自动同步数据。Spring Boot通过配置连接字符串自动感知副本集拓扑结构,实现故障转移和读写分离[^1]。 #### 二、分步配置实现 1. **MongoDB副本集搭建** ```shell # 每个节点启动命令示例 mongod --replSet myReplicaSet --port 27017 --dbpath /data/db1 mongod --replSet myReplicaSet --port 27018 --dbpath /data/db2 mongod --replSet myReplicaSet --port 27019 --dbpath /data/db3 # 初始化副本集 mongo --port 27017 > rs.initiate({ _id: "myReplicaSet", members: [ {_id:0, host:"localhost:27017"}, {_id:1, host:"localhost:27018"}, {_id:2, host:"localhost:27019", arbiterOnly:true} ] }) ``` 2. **Spring Boot配置** ```properties # application.properties spring.data.mongodb.uri=mongodb://user:password@host1:27017,host2:27018,host3:27019/dbname?replicaSet=myReplicaSet&readPreference=secondaryPreferred ``` 3. **读写分离配置** ```java @Configuration public class MongoConfig { @Bean public MongoTemplate mongoTemplate(MongoDatabaseFactory factory) { MongoTemplate template = new MongoTemplate(factory); template.setReadPreference(ReadPreference.secondaryPreferred()); return template; } } ``` #### 三、版本兼容矩阵 $$ \begin{array}{|c|c|} \hline \text{Spring Boot} & \text{MongoDB Driver} \\ \hline 2.4.x & 4.1.x \\ 2.5.x & 4.2.x \\ 3.0+ & 4.8+ \\ \hline \end{array} $$ #### 四、验证方法 1. 查看MongoDB日志确认选举状态 2. 使用$$ db.serverStatus().repl $$命令检查副本集状态 3. 通过Spring Boot Actuator的/health端点验证连接状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值