Назад | Перейти на главную страницу

Создание новых подключений MySQL при обнаружении статуса только для чтения - отказоустойчивость AWS RDS

Apache Tomcat / 7, CentOS, AWS RDS Aurora 5.6.10a

AWS предоставляет CNAME кластера, который в любой момент указывает на экземпляр кластера, выполняющий запись. например dbname-cluster.cluster-id.us-west-2.rds.amazonaws.com Это имя используется в значении URL-адреса ресурса и не изменяется. По завершении отработки отказа запись CNAME указывает на новый продвинутый экземпляр модуля записи, где трафик SQL будет продолжать работать.

Проблема при настройке заключается в том, что соединение между приложением и экземпляром MySQL не изменяется, поэтому после аварийного переключения возникают проблемы, поскольку база данных находится в режиме только для чтения. Для этого требуется перезапуск Tomcat. Отключение кеширования Java DNS путем установки networkaddress.cache.ttl = 0 в $ JAVA_HOME / jre / lib / security / java.security устраняет эту проблему, поскольку соединитель попытается снова после сбоя, а затем подключится к экземпляру записи . Обратной стороной является потеря кеша DNS для приложения. Я ищу способ периодически проверять состояние базы данных и, если она определена как доступная только для чтения, создать новое соединение с тем же URL-адресом.

Я читал о MySQL, высокой доступности JDBC и кластеризации, но в контексте перечисления первичных и вторичных серверов MySQL. В моем случае URL-адрес сервера никогда не меняется, поэтому метод перехода на другой URL-адрес сервера не подходит. Я надеюсь найти метод для проверки соединения и, если он будет доступен только для чтения, создать новые соединения с тем же URL-адресом сервера.