1.2 Метаданные и состояние кластера
MySQL Router работает, находясь между приложениями и серверами MySQL. Приложения подключаются к Router обычно так, как если бы они подключались к обычному серверу MySQL. Всякий раз, когда приложение подключается к Router, Router выбирает подходящий сервер MySQL из пула кандидатов, о которых он знает, и затем подключается к нему. С этого момента Router перенаправляет весь сетевой трафик между приложением и MySQL, включая ответы, возвращаемые обратно.
MySQL Router хранит кэшированный список онлайн-серверов MySQL или топологию и состояние настроенного кластера InnoDB. Изначально список загружается из файла конфигурации Router при запуске Router. Этот список был сгенерирован серверами InnoDB Cluster, когда Router был запущен с помощью опции --bootstrap.
Для поддержания актуальности кэша компонент кэша метаданных поддерживает открытое соединение с одним из серверов InnoDB Cluster, содержащих метаданные. Он делает это, запрашивая метаданные базы данных и информацию о текущем состоянии из схемы производительности MySQL. Метаданные кластера изменяются всякий раз, когда кластер InnoDB изменяется, например, при добавлении или удалении сервера MySQL с помощью MySQL Shell, а таблицы performance_schema обновляются в реальном времени плагином Group Replication сервера MySQL всякий раз, когда обнаруживается изменение состояния кластера.
Когда Router обнаруживает, что подключенный сервер MySQL отключился, например, потому что кэш метаданных потерял соединение и не может подключиться снова, он пытается подключиться к другому серверу MySQL, чтобы получить метаданные и состояние InnoDB Cluster с нового сервера MySQL.
Удаление метаданных кластера с помощью MySQL Shell, например dba.dropMetadataSchema(), приводит к закрытию всех текущих соединений и запрету новых подключений. Это вызывает полную остановку.
Подключения приложений к серверу MySQL, который отключился, автоматически закрываются. После этого они должны повторно подключиться к Router, который перенаправит их на онлайн-сервер MySQL.
© 2025 Oracle
Licensed under the GPLv2 License.