java mysql failover_java应用如何连接mysql5.7.17的group replication实现failover

博客讨论了在使用MySQL GroupReplication时遇到的问题,即如何通过JDBC实现连接自动切换以避免数据混乱。在node1宕机后,JDBC通过failover连接到新的primary node2,但当node1恢复后,由于连接字符串仍指向node1,导致错误的数据操作。解决方案提及了mycat中间件,但寻求更针对GroupReplication的解决办法。
摘要由CSDN通过智能技术生成

三节点的MySQL Group Replication搭建完毕, 测试也都ok, 能够实现自动切换primary, 可以实现1个node的down机而不影响整个集群, 可是jdbc如何连接并实现自动切换呢?

比如我这么写

jdbc:mysql://node1:3306,node2:3306,node3:3306/testdb?failOverReadOnly=false

init status:

node1/2/3都ok, jdbc连接的是node1进行crud都ok, node2/3为standby, jdbc不访问他们

step1:

shutdown node1后, primary自动变为node2, 此时jdbc连接通过failover连接node2进行crud没问题

step2:

node1主机故障处理完毕, 启动node1的mysql, 这里就是罪恶的根源, 数据会全部乱掉

原因是此时刚刚启动node1的mysql, 还未加入到Group Replication(执行相关命令), 但是jdbc不知道, 因为连接串第一个是node1, 他认为能联通就是在node1上进行crud, 而更新操作不会同步到node2/3,这明显就是错误的, 应该仍然连接此时的primary节点就是node2, 不知道有没有好办法

我知道mycat可以实现这个, 利用mycat的writeHost, 并行写3个

当mycat进行failover后, 只访问第二个writeHost, 如果第一个重启, 无影响, 还是访问第二个, 但是mycat终归不是针对group replication进行特别定制的, 而是以前老的replcation, 因为GR才刚刚GA, 不知道有没有好的办法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值