Драйвер для .Net приложения, использующего NHibernate для поддержки функций аварийного переключения AWS Aurora - PullRequest
0 голосов
/ 15 мая 2018

Я перевожу свою базу данных из MSSQL в Aurora (MYSQL).Приложение использует .net и NHibernate.Мы попробовали драйвер Nhibernate для MYSQL «MySql.Data», и он отлично работает для всех случаев использования, но при отказе.Когда происходит аварийное переключение, соединение не сбрасывается, и он продолжает пытаться подключиться к старому IP-адресу из кластера записи, поэтому все вызовы на запись завершаются с ошибкой, за исключением «Сервер MySQL работает с параметром --read-- only, поэтомуон не может выполнить это утверждение ".Это разрешается только после выполнения IISRESET на веб-серверах.

Я знаю, что для java разъем MariaDB может позаботиться об этом случае использования.Есть ли аналогичный драйвер для приложений .net?Какова лучшая практика для обработки такого варианта использования?

1 Ответ

0 голосов
/ 18 мая 2018

JavaD-коннектор MariaDB имеет специальную реализацию для Aurora. Там нет ничего, что я знаю для .net. Тем не менее, нормальным решением является использование кластера DNS: Аврора предоставляет другую ссылку DNS:

  • по одному на каждый экземпляр
  • конечная точка кластера (например, xxx.cluster-yyy.zzz.rds.amazonaws.com)
  • конечная точка считывателя (с балансировкой нагрузки) (например, xxx.cluster-ro-yyy.zzz.rds.amazonaws.com)

Используя конечную точку кластера, вы используете текущий экземпляр модуля записи. Когда происходит аварийное переключение, этот DNS будет указывать на нового мастера, но это изменение займет некоторое время (<60 с), поэтому в течение этого интервала вы можете в конечном итоге указать на предыдущий мастер, который, если он будет доступен, теперь будет подчиненным, указывающим на новый пастер. </p>

Лучшим решением является запрос «показать глобальные переменные, такие как« innodb_read_only »», проверяя, что результат отключен для проверки соединения.

...