在MariaDB连接器

时间:2017-05-17 09:15:05

标签: jdbc mariadb slick hikaricp amazon-rds-aurora

我们使用MariaDB JDBC连接器Aurora特定功能测试故障转移行为。

我们已将JDBC URL设置为the documentation suggest

jdbc:mysql:aurora://cluster.cluster-xxxx.us-east-1.rds.amazonaws.com/db

问题是,只要我们在URL模式中添加aurora:部分,我们就可以看到与数据库编写器的连接增加,直到我们回滚更改为止(它甚至达到了3.000个连接。)

版本:

配置:

master {
  profile = "slick.jdbc.MySQLProfile$"
  db {
    driver = "org.mariadb.jdbc.Driver"
    url = "jdbc:mysql:aurora://cluster-name.cluster-xxx.us-east-1.rds.amazonaws.com/db_name?characterEncoding=utf8mb4&rewriteBatchedStatements=true&usePipelineAuth=false"
    user = "rw_user"
    password = "rw_user_pass"
    numThreads = 20
    queueSize = 1000000
  }
}
slaves = [
  {
    profile = "slick.jdbc.MySQLProfile$"
    db {
      driver = "org.mariadb.jdbc.Driver"
      url = "jdbc:mysql:aurora://cluster-name.cluster-ro-xxx.us-east-1.rds.amazonaws.com/db_name?characterEncoding=utf8mb4&usePipelineAuth=false"
      user = "ro_user"
      password = "ro_user_pass"
      numThreads = 20
      queueSize = 1000000
    }
  }
]

我们尝试在升级MariaDB连接器版本后将aurora:部分添加到JDBC URL架构,但是与Reader的连接数开始再次增加:

如果我们在只读端点上运行show processlist,我们可以看到"清理过的所有已打开的连接"国家,"睡眠"命令。

我们已从只读端点中删除aurora:部分,以便稳定与其连接的数量。驱动程序在打开连接时是否可能搜索群集主服务器?这可以解释这种行为。

2 个答案:

答案 0 :(得分:2)

使用" aurora"关键字,驱动程序,引擎盖下,创建2个连接:

  • 与主服务器的连接,
  • 与其中一个副本的连接(如果有)。

目标始终是节省主服务器上的资源。通常,只配置一个池。然后,驱动程序根据[Connection.setReadOnly] [1]使用与主/副本的连接。

当你有单独的"写" /"阅读"池,使用配置"故障转移"将解决您的问题:驱动程序将只使用一个真正的连接。 这样就不会浪费掉#34;连接。

然后将以不同的方式处理故障转移,但具有相同的结果(例如,不在要发送到刚刚崩溃的副本的事务中的查询将不会像使用&#34时那样直接使用主连接; aurora"配置,驱动程序将在执行查询之前重新创建与另一个副本的新连接。)

答案 1 :(得分:1)

一旦你通过了几十个活动的连接,数据库就开始绊倒了。最好是限制客户端中的连接,而不是假设你有无限的带宽来接受Aurora中的连接。