java - JDBC 中的负载平衡和复制

标签 java mysql jdbc

我有一个多主从设置,有 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/

相关文章:

java - 如何从mongodb中的数组列表中获取单个记录

php - MySQL/PHP 将条件运算符(<=、>=)与 WHERE 子句中的字符串连接起来

java - mysql IN比较函数与JDBC的使用方法

java - Java 如何解决 Swift 旨在解决的类初始化问题?

java - 一组鼠标/键盘操作Java程序

MySQL、Perl DBI、execute() 和锁定(锁定的精确时刻)

java - 在 JDBC 准备语句中使用变量而不是参数索引

java - IS NULL 条件下的 JDBC 错误

java - 双重加密 2048 RSA?

php - 在 PHP 中使用 MySQL 和 MSSQL 选择灵活性