Скажем, у меня есть URL-адрес JDBC...
jdbc:mysql:replication://master,slave1,slave2,slave3/<database>
Как MySQL решает, какой подчиненный отправляет запрос на чтение? Это круговой робот или он делает что-то более умное, например, проверку, которая имеет самую низкую задержку (что, если мои подчиненные были распределены в центрах обработки данных в разных регионах)?
Спасибо
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-master-slave-replication-connection.html говорит:
Приложение сообщает, что он хочет, чтобы транзакция была доступна только для чтения, вызывая Connection.setReadOnly(true). Соединение, поддерживающее репликацию, будет использовать одно из подчиненных соединений, которые сбалансированы по нагрузке для подчиненного хоста с использованием схемы с циклическим распределением.
(акцент мой)