7.3 Развёртывание MySQL Router
Рекомендуется развёртывать MySQL Router на том же хосте, что и приложение. При использовании среды разработки (sandbox), всё работает на одном хосте. Поэтому MySQL Router развёртывается на том же хосте. При использовании производственной среды, мы рекомендуем развёртывать по одному экземпляру MySQL Router на каждую машину, на которой размещается одно из ваших приложений-клиентов. Также возможно развёртывание MySQL Router на общей машине, к которой подключаются экземпляры приложения. Для получения дополнительной информации см. Установка MySQL Router.
Для инициализации (bootstrap) MySQL Router на основе кластера InnoDB или реплики InnoDB вам потребуется строка подключения в формате URI к онлайн-экземпляру. Запустите команду mysqlrouter и укажите опцию --bootstrap=, где instanceinstance - это строка подключения в формате URI к онлайн-экземпляру. MySQL Router подключается к экземпляру и использует встроенный плагин кэширования метаданных для получения метаданных, содержащих список адресов серверных экземпляров и их роль. Например:
$> mysqlrouter --bootstrap icadmin@ic-1:3306 --account=mysqlrouter
Вам будет запрошен пароль экземпляра и ключ шифрования для MySQL Router. Этот ключ используется для шифрования пароля экземпляра, используемого MySQL Router для подключения к кластеру. Также будут отображены порты, которые можно использовать для подключений клиентов. Дополнительные опции, связанные с инициализацией, см. в Опции инициализации.
В этот момент MySQL Router ещё не запущен, чтобы маршрутизировать подключения. Инициализация — это отдельный процесс.
Процесс инициализации MySQL Router создаёт файл mysqlrouter.conf, содержащий настройки, основанные на метаданных, полученных из адреса, переданного опцией --bootstrap, в приведенном выше примере icadmin@ic-1:3306. На основе полученных метаданных MySQL Router автоматически настраивает файл mysqlrouter.conf, включая раздел metadata_cache.
Опция --bootstrap автоматически настраивает MySQL Router на отслеживание и хранение активных адресов серверов метаданных MySQL по пути, настроенному опцией dynamic_state. Это гарантирует, что при перезапуске MySQL Router он знает, какие адреса серверов метаданных MySQL являются текущими. Дополнительную информацию см. в документации по dynamic_state.
Сгенерированная конфигурация MySQL Router создаёт TCP-порты, которые используются для подключения к кластеру. По умолчанию создаются порты для связи с кластером с использованием как классического протокола MySQL, так и протокола X. Для использования протокола X серверные экземпляры должны иметь установленный и настроенный плагин X, что является стандартным для MySQL 8.0 и более поздних версий. Доступные по умолчанию TCP-порты:
6446- для сеансов чтения-записи с классическим протоколом MySQL, которые MySQL Router перенаправляет на первичные серверные экземпляры.6447- для сеансов только чтения с классическим протоколом MySQL, которые MySQL Router перенаправляет на один из вторичных серверных экземпляров.64460- для сеансов чтения-записи с протоколом X, которые MySQL Router перенаправляет на первичные серверные экземпляры.64470- для сеансов только чтения с протоколом X, которые MySQL Router перенаправляет на один из вторичных серверных экземпляров.
В зависимости от конфигурации MySQL Router номера портов могут отличаться от указанных выше. Например, если вы используете опцию --conf-base-port или переменную. Точные порты перечислены при запуске MySQL Router.
Способ перенаправления входящих подключений зависит от используемой базовой топологии. Например, при использовании кластера с единственным первичным сервером по умолчанию MySQL Router публикует порт протокола X и порт классического протокола MySQL, к которым клиенты подключаются для сеансов чтения-записи и которые перенаправляются на единственный первичный сервер кластера. В случае кластера с несколькими первичными серверами сеансы чтения-записи перенаправляются на один из первичных экземпляров по круговому алгоритму. Например, первое подключение к порту 6446 перенаправляется на экземпляр ic-1. Второе подключение к порту 6446 перенаправляется на экземпляр ic-2 и так далее.
Для входящих подключений только для чтения MySQL Router перенаправляет подключения на один из вторичных экземпляров также по круговому алгоритму. Для изменения этого поведения см. опцию routing_strategy.
После инициализации и настройки запустите MySQL Router. Если вы использовали систему установки с опцией --bootstrap, то выполните:
$> mysqlrouter &
Если вы установили MySQL Router в каталог, используя опцию --directory, используйте скрипт start.sh, расположенный в каталоге установки.
В качестве альтернативы настройте службу для автоматического запуска MySQL Router при загрузке системы, см. Запуск MySQL Router. Теперь вы можете подключить клиент MySQL, такой как MySQL Shell, к одному из входящих портов MySQL Router, как описано выше, и посмотреть, как клиент прозрачно подключается к одному из серверных экземпляров.
$> mysqlsh --uri root@localhost:6442
Для проверки, к какому экземпляру вы подключены, выполните запрос SQL к переменной состояния. Например:
mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> select @@port;
+--------+
| @@port |
+--------+
| 3310 |
+--------+
Или, например, с использованием:
mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> SHOW VARIABLES WHERE Variable_name = 'port';
+--------+
| @@port |
+--------+
| 3310 |
+--------+
© 2025 Oracle
Licensed under the GPLv2 License.