Mysql-Proxy не работает при сбое (?) - PullRequest
2 голосов
/ 12 сентября 2011

Это первый раз, когда я использую mysql-прокси, и я испытываю странное поведение, мне было интересно, решало ли сообщество это раньше.

У меня mysql-proxy (0.8.2), работающий на amazon linux (в ec2), подключенный к 2 серверам mysql. Мой Java-клиент может подключиться к прокси-серверу, и балансировка нагрузки работает нормально.

Моя проблема заключается в следующем: у меня есть клиент, который подключен (через прокси-сервер) к серверу А. Он прекрасно работает, пока я не протестирую отработку отказа. Когда я закрываю сервер A и клиент пытается выполнить простую команду вставки (на уже установленном соединении), я ожидал, что прокси перенаправит запрос на сервер B. Однако я получаю это исключение:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи.

В данном случае клиентом является Java-программа, использующая mysql-connector-java-5.1.17-bin.jar

Есть идеи, как решить эту проблему, или я что-то здесь упускаю?

1 Ответ

0 голосов
/ 17 сентября 2011

Вот обновление по этому вопросу, на случай, если некоторые другие имеют такую ​​же проблему.

Похоже, что mysql-proxy проверяет состояние на внутреннем сервере, когда клиент подключается к нему. Он не выполняет никаких keepalive \ heartbeat с DB. Я пытался заставить такое поведение, используя сценарии lua, но с треском провалился.

Потенциальная альтернатива может заключаться в использовании HAProxy и включении проверенных mysqlchecks. Я не пробовал это лично. Мы, вероятно, в конечном итоге создадим клиент подключения через прокси, который обернет java.sql.Connection и будет взаимодействовать с mysql-proxy соответствующим образом.

Дайте мне знать, если вы нашли другие способы достижения вышеуказанного.

...