【发布时间】:2018-04-20 03:45:32
【问题描述】:
我正在尝试了解 Mariadb Connetor J 的 Aurora 快速故障转移实现。虽然我不是 Java 应用工程师,但我的主要工作是 DBA。我认为我对 OOP 语言知之甚少,并且已经阅读了 mariadb 连接器 J 的源代码,重点是相关的 Aurora 实现。但这很困难,无法对我的猜测有信心。
如果能分享您的相关知识或只是分享一些 cmets,我真的很感激。
在最新版本中,我们只需注册 Aurora 集群的集群端点,驱动程序会自动查找每个实例端点。
我猜这个逻辑是如何工作的
驱动程序从 information_schema.REPLICA_HOST_STATUS 生成每个端点连接字符串,该字符串知道 Sever_id 列上的所有实例标识符。有一个关于端点字符串的模式。因此,一旦驱动程序成功连接集群端点的任何实例,驱动程序就可以生成每个实例端点。
-
在git每个实例端点后,驱动程序抛出一个查询“SHOW GLOBAL STATUS LIKE 'innodb_read_only'。如果返回值为0(false),则设置为Writer,否则设置为Reader。
李> 如果健康检查失败,驱动程序将连接字符串推入“黑名单”。(但我找不到健康检查的写入位置)
驱动程序尝试从未列入黑名单的连接字符串进行连接,但如果失败,它会尝试列入黑名单的连接字符串。
我的猜测主要来自下面的java文件。
- mariadb-connector-j/src/main/java/org/mariadb/jdbc/internal/failover/impl/AuroraListener.java
- mariadb-connector-j/src/main/java/org/mariadb/jdbc/internal/protocol/AuroraProtocol.java
【问题讨论】:
标签: java mysql jdbc mariadb amazon-aurora