我一直在探索 MySQL JDBC 驱动程序并了解它能够使用此 url ("jdbc:mysql:loadbalance://") 进行负载平衡。
我查看了文档,似乎只有随机和最佳响应时间方法用于负载平衡(链接:http ://dev.mysql.com/doc/refman/5.0/es/connector-j-reference-configuration- properties.html语法是 loadBalanceStrategy)。
问题
- 有没有办法将轮询配置为 JDBC 驱动程序的负载平衡策略?我知道其他负载平衡方法可能会更好,但我正在尝试使用循环方法进行实验。
- 为 MySQL ndb 集群(具有同步复制的多主机)实现负载平衡(我对任何负载平衡策略持开放态度)是一个好主意吗?顺便说一句,我只有 2 台机器充当主机,并且都能够接收写入和读取。虽然 MySQL 提到了 JDBC 驱动程序与 ndb 集群的使用(请参阅下面的引用 1),但我想知道是否对多主机 ndb 集群使用负载平衡实际上会降低性能(请参阅引用 2)?
引自https://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-basics.html - “可以修改使用 MySQL 集群作为数据源的 MySQL 客户端以利用连接能力与多个 MySQL 服务器实现负载均衡和故障转移,例如使用 Connector/J 5.0.6 及更高版本的 Java 客户端可以使用 jdbc:mysql:loadbalance:// URLs(在 Connector/J 5.1.7 中改进)来实现负载均衡透明地;有关将 Connector/J 与 MySQL 集群一起使用的更多信息,请参阅将 Connector/J 与 MySQL 集群一起使用。”
引用自https://dba.stackexchange.com/questions/11789/load-balanced-mysql-cluster-without-load-balancer -“生产服务器上的复制延迟可能长达一整秒 - 我已经在远程托管和在我们的数据中心中,大约 99% 的时间它是 0,但有时 mysql 显示 1。在大量流量中,由于客户端应用程序发出两个请求导致两个查询,插入和选择,我有很多冲突。在某些情况下,该行还没有出现,所以我们使用了用户 ID 的哈希值,它解决了问题”
作为对霍华德的回复的回应,这些是我在发布此问题之前所做的一些事情 - 我曾尝试使用 roundRobinLoadBalance 作为 JDBC 连接字符串 (URL) 的一部分,但发生错误,表明它不受支持。互联网上的搜索还显示,其他人也面临尝试使用 roundRobinLoadBalance 的问题。因此,我试图看看是否有其他方法可以做到这一点。