关于 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 参数:我无法真正理解 failover、replication 和 sequence 之间的区别。
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 - 故障转移