Mongodb3.6 Replica Set 配置

 单机下执行:

/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r1 --port 27018  --replSet myset
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r2 --port 27019  --replSet myset
/usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/r3 --port 27020  --replSet myset

 mongo --port 27018 进入节点:

进入主节点进行初始化
rs.initiate({
  _id:"myset", // replSet指定的名称
  members:[{
    _id:0,
    host:"127.0.0.1:27018" // 主节点ip与端口
  }]
})
再将其他两个从节点加入到该复制集中
rs.add("127.0.0.1:27019") 
rs.add("127.0.0.1:27020")
 
通过rs.status()查看效果,可以看到myset这个复制集中已经有了三个节点,stateStr指明了节点的类型,health为1表明该节点是健康的。
从库查看:
db.isMaster();
mongodb默认是从主节点读写数据,副本节点上不允许读,设置副本节点可读。
db.getMongo().setSlaveOk();
测试写入数据
db.tb.insert({"test1":"testval1"})
测试kill 主节点27018,集群自动选择27020作为主节点,
复制代码
    "_id" : 2,
            "name" : "127.0.0.1:27020",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
复制代码
主节点可以写入数据,重启27018节点,这时以前的主节点变成了从节点
复制代码
    "name" : "127.0.0.1:27018",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
复制代码

 连接复制集

  由于复制集中的切换机制,在主节点故障的情况下,集群内其他从节点会通过投票方式产生新的主节点,因此,不能像单机情况下那样,直接连接主节点;否则在MongoDB自动切换主节点时,数据库访问就会出问题。因此连接复制集需要特定的连接方式。

在MongoDB的连接字符串(connection url)中可以进行指定。

其中可以指定多个host:port,用英文逗号连接,并在最后的option中支持replicaSet参数,用于指定连接的复制集。例如:

mongodb://127.0.0.1:27018,127.0.0.1:27019,127.0.0.1:27020/books?replicaSet=myset
这样就可以连接上复制集中的books这个数据库。
 
参考:
链接:https://www.jianshu.com/p/f15325e19758
链接:http://blog.itpub.net/22664653/viewspace-710005/
 

posted @   zping  阅读(353)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示