我有一个多主从设置,有 2 个主站和 1 个从站。我希望所有读取仅在从属设备上进行,并且负载平衡(循环)写入。
复制有一个解决方案: 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 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";
如果使用负载平衡解决方案,所有内容(读取和写入)都会被分配。如果使用jdbc:mysql:replication:,写入总是发送到第一个主服务器,而读取总是由从服务器应答。
有没有办法配置 JDBC 来满足我的要求?我尽量避免有 2 个连接。
最佳答案
我想这对于 J/Connector 来说是不可能的(实际上这是有道理的)。
我将使用像 MaxScale 这样的代理解决方案,您可以在主/从和集群环境中使用它。
关于java - JDBC 中的负载平衡和复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246651/