Java JDBC中的负载平衡和复制

Java JDBC中的负载平衡和复制,java,mysql,jdbc,Java,Mysql,Jdbc,我有一个2主1从的多主-从设置。我希望所有的读操作都只在从属和负载平衡(循环)写操作上进行 有一种复制解决方案: 以及负载平衡的解决方案: 我使用标准com.mysql.jdbc.Driver作为连接对象。 连接字符串如下所示: String URL = "jdbc:mysql:loadbalance://address=(protocol=tcp)(host=localhost)(port=3306)(type=master),address=(protocol=tcp)(host=loc

我有一个2主1从的多主-从设置。我希望所有的读操作都只在从属和负载平衡(循环)写操作上进行

有一种复制解决方案:

以及负载平衡的解决方案:

我使用标准com.mysql.jdbc.Driver作为连接对象。 连接字符串如下所示:

String URL = "jdbc:mysql:loadbalance://address=(protocol=tcp)(host=localhost)(port=3306)(type=master),address=(protocol=tcp)(host=localhost)(port=3307)(type=master),address=(protocol=tcp)(host=localhost)(port=3308)(type=slave)/test?"
      + "characterEncoding=UTF-8";
如果使用loadbalance解决方案,所有内容(读取和写入)都将被分发。如果使用jdbc:mysql:replication:write总是发送到第一个主服务器,读取总是由从服务器应答


有没有办法配置JDBC来满足我的需求?我尽量避免使用两个接头。

我想这在J/接头上是不可能的(实际上这是有道理的)


我将使用像MaxScale这样的代理解决方案,您可以在主/从和集群环境中使用它。

要使其工作,将jdbc连接设置为只读是至关重要的

您所引用的链接没有以什么方式回答您的问题?我不认为两者都有可能:复制+负载平衡在一个连接中。这些链接仅显示其中一个的特定解决方案。也许你是对的,文档显示这是不可能的(因为它没有文档记录),我必须写一个小包装。我没有说任何正确的事情,我只是问了你一个问题。但并不是你想要的吗?是的,我已经试过了,但是没有读到。我猜默认的com.mysql.jdbc.Driver没有解析查询,因此驱动程序无法决定,总是直接转到master,我对此表示怀疑。相同的解析器将用于所有配置。你的评论暗示它从未使用过奴隶:这是真的吗?