【问题标题】:Driver for .Net Application using NHibernate to support failover functionality of AWS Aurora使用 NHibernate 支持 AWS Aurora 故障转移功能的 .Net 应用程序驱动程序
【发布时间】:2018-10-24 18:08:02
【问题描述】:

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

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

【问题讨论】:

    标签: .net nhibernate driver failover amazon-aurora


    【解决方案1】:

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

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

    使用集群端点,您正在使用当前的写入器实例。当发生故障转移时,此 DNS 将指向新的主服务器,但此更改需要一些时间(

    最好的解决方案是查询“显示像'innodb_read_only'这样的全局变量”检查结果是否关闭以验证连接。

    【讨论】:

    • 到目前为止,我们使用的驱动程序没有帮助,即使 Web 服务器上的 nslookup 返回新写入器的 IP,应用程序仍然连接到旧写入器。我们将默认 DNS 缓存时间从 2 分钟减少到 2 秒,并对其进行了测试。仅当我们执行 IIS 重置或应用程序池回收时,应用程序才会恢复。
    • “最好的解决方案是查询“显示像'innodb_read_only'这样的全局变量”,检查结果是否关闭以验证连接。 - .net 驱动程序中是否有任何功能可以持续检查变量或者我们需要构建轮询服务?
    • Mariadb ODBC 驱动程序似乎可以在 Aurora 故障转移中正常工作,但它不适用于 NHibernate 中的外键关系。 stackoverflow.com/questions/50594552/…
    • @Tulika 您是否曾找到 Aurora 故障转移解决方案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2015-08-07
    • 2021-12-19
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多