我希望我的应用程序始终尽力连接到galera多主数据库集群的第一个节点
我的应用程序正在使用mariadb jdbc连接器连接到数据库。由于galera的已知限制,我经常会发生冲突。一种解决方案是强制应用程序仅连接到一个节点进行写入。
根据mariadb连接器文档here,我可以使用sequentail
模式,以便连接器按顺序尝试主机。但是sequential
的问题在于它不会回退,因此我仍然不能保证所有应用程序都将连接到同一数据库节点。
有什么建议吗?
答案 0 :(得分:0)
mariadb知识页面上的文档不太清楚。
经过一些测试,这是我对Mariadb连接器的发现:
基本故障转移
如果未指定故障转移模式,则使用基本故障转移。(例如jdbc:mariadb://host1,host2
)在这种模式下,JDBC驱动程序将尽最大努力连接到host1
,直到其不可用为止。 。故障转移发生后,如果host1
返回,它将尝试回退到host1
并断开其他主机的连接。
顺序模式 此模式与基本故障转移几乎相同,不同之处在于JDBC驱动程序会粘贴到第二个节点,即使返回也不会回退到第一个节点
故障转移
我的理解是,Mariadb JDBC连接器中的jdbc:mariadb:failover
与MySQL JDBC连接器中的jdbc:mysql:loadbalance
等效。除非您指定(type=slave)
,否则连接器将以读写模式连接到所有节点。
复制
使用jdbc:mariadb:replication://host1,host2,host3
,JDBC驱动程序将以读写模式连接到host1
,所有其他节点都将以读取模式