mongodb副本集模式(无分片)当主从节点发生变化,客户端怎么知道新的主节点是谁?

mongodb的副本集提供了主从模式和宕机投票重新调整主从机制。

假如有三台机器:

  • A(ip1),主节点 *
  • B(ip2),从节点
  • C(ip3),从节点

客户端(即Web后端)数据库连接填写的是 A 的地址 ip1。

现在假设 A 宕掉,网络调整为:

  • A(ip1),故障
  • B(ip2),主节点 *
  • C(ip3),从节点

但这个过程客户端并不知道吧,它依然连接着 A,无法读写。

为了适应网络变化,客户端需要手动改成连接 B 的地址???有没有类似于 mongos 路由的方式,能够在数据库实现自动的切换?

阅读 2.6k
1 个回答

客户端为啥只连接着 A?不应该是 A/B/C 都连接吗?SDK 自己内部选择哪个是可用的主才会往里写数据。

不知道你客户端是啥语言,以 Java 距离,new MongoClient(addrs) 的时候第一个参数是一个数组,你应该把这个副本集的所有节点都传进去。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进