JDBC中的负载平衡和复制

时间:2015-07-06 13:03:54

标签: java mysql jdbc

我有一个多主从设置,有2个主设备和1个从设备。我想只在Slave上进行所有读取,并且loadbalanced(循环)写入。

有一个复制解决方案:   http://dev.mysql.com/doc/connector-j/en/connector-j-master-slave-replication-connection.html

和负载均衡解决方案:   http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-managing-load-balanced-connections.html

我正在使用标准 com.mysql.jdbc.Driver 作为连接对象。 连接String如下所示:

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:,则写入总是转到第一个Master,并且Slave总是回答读取。

有没有办法配置JDBC以满足我的要求?我尽量避免有2个连接。

2 个答案:

答案 0 :(得分:0)

我想这对于J / Connector来说是不可能的(实际上这很有意义)。

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

答案 1 :(得分:0)

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