Я создал кластер mariadb, и я пытаюсь заставить приложение Java иметь возможность перехода на другой компьютер, когда один из них умирает.Использование galera mariadb с jdbc
Я создал приложение, которое создает соединение с "jdbc:mysql:sequential://host1,host2,host3/database?socketTimeout=2000&autoReconnect=true"
. Приложение делает запрос в цикле каждую секунду. Если я убью узел, в котором приложение выполняет запрос (Statement.executeQuery()), я получаю SQLException из-за таймаута. Я могу поймать исключение и повторно выполнить оператор, и я вижу, что запрос отправляется на другой сервер, поэтому переход на другой ресурс в этом случае работает нормально. Но я ожидал, что execQuery() не будет генерировать исключение и тихо повторить попытку другого сервера автоматически.
Я ошибаюсь, полагая, что мне не нужно обрабатывать исключение и явно повторять запрос? Есть ли что-то еще, что мне нужно для настройки, чтобы это произошло?
Спасибо. Я не знал об этом. Хотя эта информация очень полезна для меня, она не полностью отвечает на мой вопрос. Знаете ли вы, возможно ли повторное подключение драйвера к сбоям во время запроса (в отличие от генерирования исключения, а затем для повторного подключения). У меня есть очень простые запросы, поэтому я думаю, что могу рискнуть. Но ваш ответ определенно будет полезен мне в будущем. – ps197xv
Извините, я мало знаю о соединителе Java. –