关于 MariaDB 的 JDBC 故障转移/高可用性的说明

Posted

技术标签:

【中文标题】关于 MariaDB 的 JDBC 故障转移/高可用性的说明【英文标题】:Clarification about JDBC failover / High Availability with MariaDB 【发布时间】:2018-04-28 22:10:20 【问题描述】:

我已经使用两个 MariaDB 10.2 数据库设置了一个小型集群,一个是(主动)主数据库,另一个是备用数据库(被动主数据库)。我已启用 GTID 和半同步复制。假设MDB1是master,MDB2是standby,因此MDB2复制MDB1 binlog,MDB1复制MDB2 binlog。当然为了避免冲突,我只写在 MDB1 上。

我担心的是 JDBC 参数:我无法真正理解 failoverreplicationsequence 之间的区别。

jdbc:mariadb:replication://localhost:3306,localhost:3307/mydb

使用上面的 replication 似乎总是在 MDB1 (:3306) 上写入并同时从 MDB1 和 MDB2 中读取,对吧?

如果我想始终从 MDB1 写入和读取,除非它变得不可用,这是正确的设置吗?

当 MDB1 再次可用时,如何避免不一致?这是否通过使用 GTID 来保证?

我已遵循这些指南:

Availability with MariaDB TX: The Definitive Guide p11 Failoverand High availability with MariaDB Connector/J

【问题讨论】:

【参考方案1】:

你应该使用的是sequential 根据文档,

''' 如果故障转移和负载平衡模式设置为复制,则连接器假定第一个主机是主主机,而其他主机默认是从属主机,如果它们的类型没有明确提及的话。 '''

【讨论】:

以上是关于关于 MariaDB 的 JDBC 故障转移/高可用性的说明的主要内容,如果未能解决你的问题,请参考以下文章

配置 GlassFish JDBC 连接池以处理 Amazon RDS 多可用区故障转移

具有 2 个不同数据库名称的 MySQL JDBC URL 故障转移

PostgreSQL Replication 101 - 故障转移

SQL Server 的多子网故障转移

关于MongoDb Replica Set的故障转移集群——实战篇

MariaDB基于MHA和Galera Cluster实现高可用