使用NHibernate的.Net应用程序驱动程序,以支持AWS Aurora的故障转移功能

时间:2018-05-15 01:46:29

标签: .net nhibernate driver failover amazon-rds-aurora

我正在将我的数据库从MSSQL迁移到Aurora(MYSQL)。该应用程序使用.net和NHibernate。我们为MYSQL“MySql.Data”尝试了Nhibernate驱动程序,它适用于所有用例但故障转移。发生故障转移时,连接不会重置,并且它会继续尝试从写入器集群连接到旧IP,因此所有写入调用都会失败,并且“MySQL服务器正在运行,只读--read - only选项”它无法执行此声明“。只有在Web服务器上执行IISRESET后才能解决此问题。

我知道对于java,MariaDB连接器能够处理这个用例。 .net应用程序是否有类似的驱动程序? 处理此类用例的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

MariaDB java连接器具有Aurora的特定实现。我不知道.net。 通常的解决方案是使用群集DNS:Aurora提供不同的DNS链接:

  • 每个实例一个
  • 群集端点(如xxx.cluster-yyy.zzz.rds.amazonaws.com)
  • 读者端点(负载均衡)(如xxx.cluster-ro-yyy.zzz.rds.amazonaws.com)

使用群集端点,您正在使用当前的编写器实例。当存在故障转移时,此DNS将指向新的主服务器,但此更改需要一些时间(<60秒),因此在该间隔期间您可能最终指向前一个主服务器,如果可用,现在将成为从服务器指向一个新的贴纸。

最好的解决方案是查询&#34;显示全局变量,例如&quot; innodb_read_only&#39;&#34;检查结果是否为OFF以验证连接。