当 Amazon Aurora MySQL 兼容版集群发生失效转移时,我希望最大限度地减少应用程序停机时间和连接错误。
解决方法
当 Aurora MySQL 兼容版集群发生失效转移时,该集群可能会因停机而出现临时连接中断和错误。如果您未正确配置设置,则应用程序停机时间会延长。要最大限度地减少失效转移期间的应用程序停机时间,请执行以下操作。
使用集群端点和读取器端点
连接到集群端点和读取器端点。最佳做法是不连接到单个数据库实例端点。集群和读取器端点在失效转移后会自动跟踪实例角色的变化。使用集群端点可自动指向当前的写入器数据库实例,以进行读写操作。使用读取器端点可自动指向可用的读取器数据库实例,以进行读取操作。
设置较低的 DNS TTL 值
如果您的应用程序缓存了 Amazon Aurora 数据库实例的 DNS 端点,请将生存时间 (TTL) 值设置为小于 30 秒。发生失效转移后,底层 IP 地址可能会发生变化,TTL 值可确保过时的 DNS 数据不会缓存太长时间。如果将 TTL 值设置得过高,则应用程序可能会在失效转移后使用旧的 IP 地址,并且会延长连接错误的时间。
使用 AWS JDBC 驱动程序
使用 AWS Java 数据库连接 (JDBC) 驱动程序可将连接切换到新的写入器或读取器数据库实例,而无需依赖 DNS 传播。该驱动程序可以快速恢复您的连接。有关更多信息,请参阅 GitHub 网站上的 AWS JDBC Driver(AWS JDBC 驱动程序)。
使用 Amazon RDS 代理
使用 Amazon RDS 代理直接连接到数据库实例。该代理会自动将流量路由到新的写入器数据库实例,并最大限度地减少失效转移期间的应用程序停机时间。该代理可绕过 DNS 缓存问题,并在失效转移期间保留现有连接。Amazon RDS 代理基于集群元数据跟踪数据库实例角色,而无需依赖 DNS。该代理可以帮助快速恢复连接,并且可能比等待 DNS 传播更快。
相关信息
适用于 Amazon Aurora 的 Advanced JDBC Wrapper 驱动程序简介
提高 Amazon Aurora 上应用程序的可用性