MariaDB多个主连接器在JDBC连接字符串中

时间:2014-07-07 14:05:02

标签: java mysql jdbc mariadb

我正在使用MariaDB 5.5.38和MySQL的JDBC驱动程序。根据{{​​3}},我应该使用像

这样的连接字符串
jdbc:mysql://address=(type=master)(host=master1host),address=(type=master)(host=master2host)/db

使用多个主控主机。但是当我使用它时,我会在NullPointerException中获得com.mysql.jdbc.NonRegisteringDriver.parseHostPortPair(NonRegisteringDriver.java:216) [mysql.mysql-connector-java-5.1.30.jar:na]。我也使用Apache Commons的连接池,但我认为它不相关。那么,我做错了什么?

3 个答案:

答案 0 :(得分:1)

您指向this article的链接描述了主/从设置。

如果您想要多主设置,可以使用此网址:

jdbc:mysql:loadbalance://masterHost1,masterHost2/db

在此处详细了解:Configuring Load Balancing with Connector/J

答案 1 :(得分:0)

浏览mysql-connector-j源代码后,NPE是由连接URL上缺少前缀引起的。它应该是以下之一:

jdbc:mysql:loadbalance//.....
jdbc:mysql:replication//.....

使用这个url似乎只有// host:port,host:port / db工作的url,只有第一个用作master。

另外要检查的是你正在使用的Driver类。

根据这个问题:How do I configure our MySQL ReplicationDriver for our JBoss 7 data source?

正确的课程是

com.mysql.jdbc.ReplicationDriver

答案 2 :(得分:0)

我遇到了同样的问题并发现了以下内容: https://bugs.mysql.com/bug.php?id=75440

我将连接网址更改为:

jdbc:mysql://address=(protocol=tcp)(type=master)(host=serv1),address=(protocol=tcp)(type=master)(host=serv2)/db
到目前为止,这对我有用