MariaDB Connector / J 2.6.x是否使用Aurora创建到主服务器和从服务器的连接?

问题描述

根据其他答案(12)以及mariadb-connector-j repo中的一些文档,共识似乎是:

在主/从群集上,驱动程序将使用基础2连接: 一个到主实例,一个到从实例。

aurora的“连接”表示与实例的2个基础连接: 一个主人,一个奴隶。驱动程序将使用基础连接 可以根据Connection.setReadonly()来控制主机或从机。

在使用“ aurora”关键字driver时,请在引擎盖下创建2 连接:与主服务器的连接,与一个主服务器的连接 副本的数量(如果有)。目标始终是节省资源 主服务器。通常,仅配置一个池。然后司机 根据以下方式使用与主要/副本的连接 [Connection.setReadOnly]

但是,我为自己尝试了此操作,并且在MariaDB Connector / J 2.6.2(在使用HikariCP作为连接池的Play 2.8.x应用程序中)中没有看到此行为。我创建了一个新的MysqL aurora群集(具有主副本和只读副本),并修改了我的测试应用程序,以使用HikariCP池连接到此群集,该池配置为固定大小为8个连接,使用群集端点URL,如下所示:>

"jdbc:MysqL:aurora://test.cluster-abcdefg.us-east-1.rds.amazonaws.com:3306/test"

根据我在日志中看到的内容以及RDS Web仪表板的“监视”选项卡中的所附图像,一旦应用程序启动,主服务器将转到8个连接(蓝线),而只读副本具有0个连接(橙色线)。这似乎与上述所有观点相反,在引擎盖下,驱动程序建立了2个基础连接,并根据给定Connection的只读属性的状态在它们之间进行选择。

RDS web dashboard connections monitor

此连接的Play配置如下:

  test {
    driver = org.mariadb.jdbc.Driver
    url = "jdbc:MysqL:aurora://test.cluster-abcdefg.us-east-1.rds.amazonaws.com:3306/test"

    hikaricp {
      autoCommit = false
      readOnly = false
    }
  }

如果我改为将连接配置为:

  test {
    driver = org.mariadb.jdbc.Driver
    url = "jdbc:MysqL:aurora://test.cluster-abcdefg.us-east-1.rds.amazonaws.com:3306/test"

    hikaricp {
      autoCommit = true
      readOnly = true
    }
  }

然后我确实看到了与主副本和只读副本的连接:

RDS web dashboard monitoring 2

请帮助我了解这种行为。

我要实现的目标是拥有单独的写入和读取池。写池将始终指向主副本,而读池将始终指向只读副本(假设存在副本)。我想避免双重基础连接,因为readOnly设置是在池级别配置的,并且在给定的Connection生命周期内永远不会改变。我该如何实现?

此外,我想知道在指定autoReconnect故障转移模式时是否需要使用aurora参数。该参数的值是否与aurora故障转移模式有关?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)