MySQL Router настраивается, используя необходимый конфигурационный файл, дополнительные дополнительные конфигурационные файлы и некоторые опции также доступны из командной строки.
Самонастройка это предпочтительный и общий подход к созданию
конфигурационного файла MySQL Router. См. опцию
--bootstrap
. Самонастройка производит
полностью функциональный файл mysqlrouter.conf
.
Формат файла настройки напоминает традиционный формат файла INI с секциями и параметрами, но с несколькими дополнительными расширениями.
Наклонные черты вправо и влево поддерживаются. Наклонные черты влево безоговорочно копируются, поскольку они не символы ESC.
Конфигурационный файл может содержать строки комментария. Они начинаются с
решетки (#
) или точки с запятой
(;
) и продолжаются до конца строки.
Каждый конфигурационный файл состоит из списка секций, где каждая секция содержит последовательность опций. У каждого параметра конфигурации есть имя и значение. Например:
[section name
]option
=value
option
=value
option
=value
[section name
:optional section key
]option
=value
option
=value
option
=value
Заголовок секции конфигурационного файла начинается с открывающей скобки
([
) и завершается закрывающей скобкой
(]
). Допустимы знаки начального и конечного
пробелов в строке, которые проигнорированы, но никаких пробелов в скобках
секции быть не должно.
Заголовок секции в скобках состоит из
имени и дополнительного
ключа, который отделен от заголовка
секции двоеточием (:
). Комбинация имени секции и
ключа уникальна для конфигурации.
Имена секции и ключи из последовательности из одной или более букв, цифр
или подчеркивания (_
). Никакие другие знаки не
разрешены в имени секции или ключа.
Секция подобна пространству имен. Например, значение
user
зависит от своей связанной секции.
user секции
[DEFAULT]
отсылает к пользователю системы, от мени коего запущен MySQL Router,
которым также управляет опция командной строки
--user
. Не связанный с этим
user в секции
[metadata_cache] относится к
пользователю MySQL, который получает доступ к метаданным сервера MySQL.
Специальное имя секции DEFAULT
(любой
регистр) используется для значений по умолчанию для опций. Опции, не
найденные в секции, ищутся в секции по умолчанию. Секция по умолчанию не
принимает ключ секции.
После заголовка начала секции может быть последовательность из ноля или большего количества опций, где каждая строка имеет форму:
name
=value
Любые знаки начального или конечного пробела в имени или значении опции
удалены прежде, чем опция обработана. Имена нечувствительны к регистру.
Концевые комментарии не поддерживаются, таким образом, в этом примере опция
mode
получает значение
"read-only # Read only mode" и поэтому произведет ошибку.
[routing:round-robin] # Trailing comments are not supported so the following is incorrect routing_strategy = round-robin # Circles back to first server
Значения опций понимают интерполяцию
переменной, используя имя опции, данное в скобах
{
и }
.
Интерполяция сделана на поиске значения опции, когда это прочитано из
конфигурационного файла. Если переменная не определяется тогда, никакие
замены не сделаны, и значение опции прочитано буквально.
Рассмотрите этот типовой конфигурационный файл:
[DEFAULT] prefix = /usr/ [sample] bin = {prefix}bin/{name} lib = {prefix}lib/{name} name = magic directory = C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}
Здесь значение bin
= "/usr/bin/magic",
значение lib
= "/usr/lib/magic" и
значение directory
=
"C:\foo\bar\{3a339172-6898-11e6-8540-9f7b235afb23}", так как переменная,
названная "{3a339172-6898-11e6-8540-9f7b235afb23}" не определяется.
MySQL Router определяет предварительно определенные переменные, которые
доступны конфигурационному файлу. Переменные используют скобки, например,
{program}
для предварительно
определенно переменной program
.
Таблица 4.1. Предварительно определенные переменные
Имя | Описание |
---|---|
program |
Название программы, обычно mysqlrouter
|
origin |
Путь к каталогу, где расположен двоичный модуль |
logging_folder |
Путь к папке для файлов журнала |
plugin_folder |
Путь к папке для плагинов |
runtime_folder |
Путь к папке для данных во время выполнения |
config_folder |
Путь к папке для конфигурационных файлов |
MySQL Router ищет конфигурационный файл по умолчанию при запуске и произвольно загружает определенные пользователем конфигурационные файлы во времени выполнения из командной строки.
По умолчанию MySQL Router просматривает определенные местоположения для своих конфигурационных файлов, которые зависят от платформы и того, как MySQL Router был установлен.
Можно изменить местоположения по умолчанию во время компиляции при помощи
опции -DROUTER_CONFIGDIR=<path>
.
Вы могли также отредактировать
cmake/settings.cmake
, чтобы
изменить местоположения по умолчанию прежде, чем собрать MySQL Router,
таким образом добавляя новые местоположения или исключения
для определенных платформ.
Выполните mysqlrouter --help
, чтобы
увидеть местоположения конфигурационного файла по умолчанию (и их
доступность) на вашей системе. Например:
shell>mysqlrouter --help
MySQL Router v8.0.14 on macOS v10.12 (64-bit) (GPL community edition) Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Start MySQL Router. Configuration read from the following files in the given order (enclosed in parentheses means not available for reading): (/usr/local/mysql-router/mysqlrouter.conf
)/Users/philip/.mysqlrouter.conf
Plugins Path: /usr/local/lib/mysqlrouter Default Log Directory: /usr/local/mysql-router Default Persistent Data Directory: /usr/local/mysql-router/data Default Runtime State Directory: /usr/local/mysql-router/run Usage: mysqlrouter [-v|--version] [-h|--help] ...
Конфигурационный файл по умолчанию не загружается,
если определенный пользователями конфигурационный файл передается опцией
--config
.
В Linux MySQL Router просматривает следующие местоположения по умолчанию, хотя эти местоположения системно-зависимы:
/etc/mysqlrouter/mysqlrouter.conf
В отличие от сервера MySQL, обратно совместимый путь
"/etc/mysqlrouter.conf
" не поддерживается.
$HOME/.mysqlrouter.conf
Для обратной совместимости MySQL Router также ищет вариант .ini в каждом каталоге. При этом Router смотрит первоначальный каталог для варианта .conf, затем вариант .ini, затем повторяет процесс в следующем каталоге, который, как правило, является корневым каталогом пользователя в системе.
Две опции параметров командной строки управляет этими местоположениями конфигурационного файла:
--config
(или
-c
): Прочитайте основную конфигурацию из этого
файла и не используйте пути к файлам по умолчанию.
Использование в качестве примера: производя автономную установку MySQL
Router с опцией
--directory
, произведенный файл
start.sh
передает этот выбор произведенному
mysqlrouter.conf
в этом каталоге.
--extra-config
(или
-a
): Прочитайте этот дополнительный
конфигурационный файл после того, как конфигурационные файлы будут прочитаны
из местоположений по умолчанию или из файлов, определенных, используя опцию
--config
.
Например:
shell> mysqlrouter --config /custom/path/to/router.conf \ --extra-config /another/config.conf
Многократные дополнительные параметры конфигурации могут быть переданы,
и файлы загружаются в порядке, в которым они введены опцией
--config
, загружаемые перед
--extra-config
:
shell> mysqlrouter --extra-config a.conf --config b.conf \ --extra-config c.conf
В вышеупомянутом примере b.conf
загружается сначала, затем a.conf
и
c.conf
, именно в этом порядке.
Кроме того, конфигурационный файл по умолчанию, такой как
/etc/mysqlrouter/mysqlrouter.conf
, не
загружается потому, что используется --config
.
Каждый загруженный конфигурационный файл отвергает параметры конфигурации от ранее прочитанных конфигурационных файлов.
Ниже перечислено расположение файла по умолчанию, чтобы прочитать конфигурационные файлы на популярных платформах Linux.
Выполните mysqlrouter --help
, чтобы
увидеть местоположения конфигурационного файла по умолчанию
(и доступность) в вашей системе.
По умолчанию установка в масштабе всей системы под
/usr/local
:
/usr/local/etc/mysqlrouter.conf
/etc/mysqlrouter/mysqlrouter.conf
--directory
добавляет
mysqlrouter.conf
в каталог, определенный
--directory.Выполните mysqlrouter --help
, чтобы
увидеть местоположения конфигурационного файла по умолчанию
(и доступность) в вашей системе.
По умолчанию установка в масштабе всей системы под
C:\ProgramData\MySQL\MySQL Router
:
C:\ProgramData\MySQL\MySQL
Router\mysqlrouter.conf
C:\Users\
username
\AppData\Roaming\mysqlrouter.conf
, где
username
заменяется именем
пользователя вашей системы.--directory
: добавляет
mysqlrouter.conf
в каталог, указанный в
--directory.Опции конфигурационного файла и параметры командной строки служат различным целям и описаны в отдельных местах.
При
bootstrapping
параметры настройки
произведенного конфигурационного файла зависят от опций, переданых
mysqlrouter. Например, передача
--conf-use-sockets
позволяет
сокетные соединения, определяя
socket
для каждого маршрута в произведенном
конфигурационном файле. Или
--directory
добавляет все произведенные файлы
и подкаталоги к единственному каталогу и регулирует произведенные значения
конфигурационного файла соответственно.
Эта секция описывает команды MySQL Router. Команда mysqlrouter используется для большинства задач, включая самонастройку и управление MySQL Router, mysqlrouter_plugin_info это дополнительное средство отладки.
MySQL Router принимает параметры командной строки, которые передаются в mysqlrouter, чтобы затронуть его поведение или изменить маршрутизатор на основе кластера InnoDB.
Запуская Router, можно произвольно использовать
--config
, чтобы перейти в местоположение
главного конфигурационного файла (иначе местоположение по умолчанию
используется), и
--extra-config
для дополнительного конфигурационного файла.
Самонастройка параметров командной строки затрагивает произведенные файлы и каталоги, которые используются, запуская MySQL Router.
Таблица 4.2. Основные опции
Формат | Описание |
---|---|
--config | Прочитайте параметры конфигурации из обеспеченного файла. |
--extra-config | Прочитайте этот файл после того, как конфигурационные файлы будут прочитаны из местоположений по умолчанию или из файлов, определенных опцией --config. |
--help | Вывод справочной информации. |
--user | Запустить mysqlrouter как пользователь, имеющий указанное имя или числовой идентификатор пользователя. |
--version | Вывод информации о версии. |
Таблица 4.3. Опции самонастройки
Формат | Описание | Введено |
---|---|---|
--account-host | Образец хоста для настройки учетных записей. | 8.0.12 |
--bootstrap | Настроить Router для работы с кластером MySQL InnoDB. | |
--bootstrap-socket | Соединитесь с сервером метаданных MySQL через сокет Unix, используется вместе с --bootstrap. | |
--conf-base-port | Основной порт, чтобы использовать для портов Router. | |
--conf-bind-address | IP-адрес интерфейса, с которым надо связать роутер. | |
--conf-skip-tcp | Отключить ли закрепление порта TCP для поступающих связей. | |
--conf-use-sockets | Использовать ли сокеты Unix. | |
--connect-timeout | Число секунд перед попытками подключения к серверу метаданных. | 8.0.4 |
--directory | Создает отдельный каталог для нового роутера. | |
--force | Реконфигурация возможно существующего маршрутизатора. | |
--force-password-validation | Создавая учетную запись пользователя автоматически, не пропускайте стадию validate_password. | |
--master-key-reader | Скрипт, который возвращает главный ключ в STDOUT. | 8.0.12 |
--master-key-writer | Скрипт, который читает главный ключ из STDIN. | 8.0.12 |
--name | Дает символьное имя для роутера. | |
--password-retries | Количество повторений, чтобы использовать для создания пароля пользователя. | |
--read-timeout | Число секунд перед операциями чтения метаданных сервера. | 8.0.4 |
--report-host | Имя хоста роутера, отвергает автообнаружение. | 8.0.12 |
Таблица 4.4. Опции SSL
Формат | Описание | Введено |
---|---|---|
--ssl-ca | Путь к файлу сертификата SSL, чтобы проверить сертификат сервера. | |
--ssl-capath | Каталог, который содержит файлы доверенных сертификатов SSL Certificate Authority | |
--ssl-cert | Клиентский сертификат SSL, чтобы облегчить клиентскую идентификацию во время bootstrap | 8.0.4 |
--ssl-cipher | Отделенный двоеточиями список шифров SSL, если SSL позволен. | |
--ssl-crl | Путь к файлу SSL CRL, чтобы использовать, проверяя сертификат сервера. | |
--ssl-crlpath | Путь к каталогу, содержащему файлы SSL CRL, чтобы использовать, проверяя сертификат сервера. | |
--ssl-key | Частный ключ SSL, чтобы облегчить клиентскую идентификацию во время bootstrap | 8.0.4 |
--ssl-mode | Способ связи SSL для использования во время bootstrap и нормального функционирования, соединяясь с сервером метаданных. Аналогично --ssl-mode в клиенте mysql. | |
--tls-version | Список разделенных запятой значений версий TLS, если SSL позволен. |
Таблица 4.5. Опции сервисов Windows
Формат | Описание |
---|---|
--clear-all-credentials | Удаляет все сохраненные данные авторизации |
--install-service | В Windows установить MySQL Router как сервис MySQLRouter и установить его автоматически запускаться, когда Windows перезапустится. |
--install-service-manual | В Windows установить MySQL Router как сервис MySQLRouter, который может быть вручную запущен. |
--remove-credentials-section | Удалите параметры авторизации. |
--remove-service | Удалить MySQL Router как сервис Windows. |
--service | Запустить MySQL Router как сервис Windows. |
--update-credentials-section | Обновите данные авторизации. |
--version
,
-V
Свойство | Значение |
---|---|
Командная строка | --version , -V |
Показывает номер версии и соответствующую информацию:
shell> mysqlrouter --version
MySQL Router v8.0.14 on Linux (64-bit) (GPL community edition)
--help
, -?
Свойство | Значение |
---|---|
Командная строка | --help , -? |
Показывает справочное сообщение.
Опция
--help
обладает дополнительным преимуществом.
Наряду с объяснением каждой из опций,
--help
также показывает пути, используемые,
чтобы найти конфигурационный файл, и несколько путей по умолчанию. Следующая
выдержка из вывода
--help
показывает пример
с машины под Ubuntu 16.04:
shell> mysqlrouter --help
MySQL Router v8.0.14 on Linux (64-bit) (GPL community edition)
Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of
their respective owners.
Start MySQL Router.
Configuration read from the following files in the given order (enclosed
in parentheses means not available for reading):
(/etc/mysqlrouter/mysqlrouter.conf)
/home/philip/.mysqlrouter.conf
Plugin Path:
/usr/lib/x86_64-linux-gnu/mysqlrouter
Default Log Directory:
/var/log/mysqlrouter
Default Persistent Data Directory:
/var/lib/mysqlrouter
Default Runtime State Directory:
/run/mysqlrouter
Usage: mysqlrouter [-V|--version] [-?|--help]
...
Секция конфигурации показывает порядок путей, которые могут использоваться для чтения конфигурационного файла. В этом случае только второй файл доступен.
--bootstrap
URI
,
-B URI
Свойство | Значение |
---|---|
Командная строка | --bootstrap URI, -B URI |
Тип | String |
Основная опция для автонастройки MySQL Router, соединяясь с сервером метаданных кластера InnoDB в обеспеченном URI. Маршрутизатор MySQL формирует себя на основе информации от сервера метаданных кластера InnoDB. Пароль в случае необходимости запрашивается. Если имя пользователя не введено как часть URI тогда, имя пользователя по умолчанию "root", см. Connecting using a URI String.
В то время как
--bootstrap
принимает URI для связей TCP/IP,
используя
--bootstrap-socket
, имя локального сокета
Unix заменяет часть "host:port" в URI, переданного опции
--bootstrap
на той же самой машине.
По умолчанию процесс начальной загрузки выполняет конфигурацию в масштабе
всей системы MySQL Router. Только один экземпляр MySQL Router
может формироваться для работы в масштабе всей системы. Его
router_name
= "default".
Если дополнительные экземпляры нужны, используйте опцию
--directory
, чтобы создать отдельные
установки MySQL Router.
URI
: экземпляр сервера из
кластера InnoDB, чтобы получить информацию о метаданных. Если обеспеченный
URI
только для чтения, MySQL Router
автоматически снова соединяется с экземпляром чтения-записи в кластере
InnoDB, таким образом, это может зарегистрировать MySQL Router.
Если конфигурационный файл уже существует, когда вы запускаете MySQL
Router с опцией
--bootstrap
, существующий
router_id
в том файле снова используется, и
процесс реконфигурации происходит. Конфигурационный файл восстановлен с нуля,
и учетная запись сервера метаданных MySQL Router воссоздается, хотя и с тем
же самым именем.
Во время процесса реконфигурации отменены все изменения, сделанные в
существующем конфигурационном файле. Чтобы настроить конфигурационный файл и
все еще сохранить способность автоматической реконфигурации (самонастройки),
можно использовать параметр командной строки
--extra-config
, чтобы
определить дополнительный конфигурационный файл, который прочитан после
главного конфигурационного файла. Эти параметры конфигурации используются,
потому что этот дополнительный конфигурационный файл загружается после
главного конфигурационного файла.
Процесс начальной загрузки создает новую учетную запись пользователя MySQL
со случайно произведенным паролем, чтобы использовать указанный MySQL Router.
Эта учетная запись применяется MySQL Router, соединяясь с сервером метаданных
и кластером InnoDB, чтобы получить информацию о текущем состоянии. Для
получения дальнейшей информации об этом пользователе, включая то, как пароль
сохранен и привилегии MySQL, которые это требует, см. документацию для
MySQL user option
.
Произведенный конфигурационный файл называют
mysqlrouter.conf
, его
местоположение зависит от типа формируемого экземпляра, системы и пакета.
Для установок в масштабе всей системы произведенный конфигурационный файл
добавляется к каталогу конфигурации системы, такому как
/etc
или
%PROGRAMDATA%\MySQL\MySQL Router\
.
Вызов Executing mysqlrouter --help
покажет это местоположение.
Опция --user
нужна, выполняя самонастройку
с суперпользователем (uid=0). Хотя это не рекомендуется, возможна передача
его имени как аргумента, такой как --user=root
.
Применение
--bootstrap
добавляет значения по умолчанию к
произведенному конфигурационному файлу MySQL Router, и некоторые из этих
значений по умолчанию зависят от других условий. Упомянутые ниже некоторые
условия, которые затрагивают произведенные значения по умолчанию, где
умолчание определяется передачей параметра
--bootstrap
.
Таблица 4.6. Условия, которые затрагивают умолчания для --bootstrap
Условие | Описание |
---|---|
--conf-base-port |
Изменяет произведенный
По умолчанию произведенное значение |
--conf-use-sockets |
Вставляет определения socket
для каждого типа подключения. |
--conf-skip-tcp |
Определения связи TCP/IP не определяются. |
--directory |
Влияет на все пути к файлам, а также производит дополнительные файлы. |
Режим единственного основного выключен | Если group_replication_single_primary_mode
отключена (по умолчанию включена), только связи Read-Write (но не
Read-Only) определяются. Для получения дополнительной информации посмотрите
здесь. |
Другое | Этот список не исчерпывающий, другие варианты и условия также затрагивают произведенные значения. |
--bootstrap-socket
socket_name
Свойство | Значение |
---|---|
Командная строка | --bootstrap-socket socket_name |
Для платформы | Linux |
Используется с
--bootstrap
для применения местного сокета
Unix вместо TCP/IP. Значение
--bootstrap-socket
заменяет часть "host:port"
в
--bootstrap
назначенным именем сокета
для соединения с сервером метаданных MySQL, используя сокеты Unix.
Это экземпляр MySQL, который настраивается, и он должен быть на той же самой
машине, если сокеты используются. Для дополнительных деталей о том, как
самонастройка работает, посмотрите
--bootstrap
.
Эта опция отличается от параметра командной строки
--conf-use-sockets
, который устанавливает
опцию конфигурационного файла
socket
во время процесса начальной загрузки.
Этот выбор не доступен в Windows.
--directory
dir_path
,
-d
dir_path
Свойство | Значение |
---|---|
Командная строка | --directory dir_path, -d dir_path |
Тип | String |
Определяет, что отдельная установка MySQL Router будет создана в определенном каталоге вместо того, чтобы формировать экземпляр маршрутизатора в масштабе всей системы. Это также позволяет многократным копиям маршрутизатора быть созданными в той же самой системе.
Отдельная структура каталогов для Router:
$path/start.sh $path/stop.sh $path/mysqlrouter.pid $path/mysqlrouter.conf $path/mysqlrouter.key $path/run $path/run/keyring $path/data $path/log $path/log/mysqlrouter.log
Если этот выбор определяется, файл брелка хранится в соответствии с
каталогом времени выполнения того экземпляра, под
run/
в указанном каталоге,
в противоположность каталогу времени выполнения в масштабе всей системы.
Если также включен
--conf-use-sockets
, произведенные файлы
сокета также добавляются к этому каталогу.
--master-key-writer
Свойство | Значение |
---|---|
Командная строка | --master-key-writer file_path |
Введено | 8.0.12 |
Тип | String |
Этот дополнительный выбор самонастройки принимает скрипт,
который читает главный ключ из STDIN.
Это также использует переменную окружения
ROUTER_ID, установленную MySQL Router
перед вызовом скрипта master-key-writer
.
Опции master-key-writer
и
master-key-reader
должны использоваться вместе, и
использование их означает, что опция
master_key_file
не должна быть определена в
mysqlrouter.conf
, поскольку главный ключ не
написан в файл главного ключа mysqlrouter.key
.
Это также написано в произведенный конфигурационный файл MySQL Router
как опция master-key-writer
[DEFAULT].
Содержание в качестве примера скрипта bash
writer.sh
:
#!/bin/bash KID_=$(keyctl padd user ${ROUTER_ID} @us <&0)
Пример использования этого:
shell> mysqlrouter --bootstrap=127.0.0.1:3310 \ --master-key-reader=./reader.sh \ --master-key-writer=./writer.sh
Это также затрагивает произведенный
mysqlrouter.conf
:
[DEFAULT] ... master-key-reader=reader.sh master-key-writer=writer.sh
Свойство | Значение |
---|---|
Командная строка | --master-key-reader file_path |
Введено | 8.0.12 |
Тип | String |
Этот дополнительный параметр автонастройки принимает скрипт, который
пишет главный ключ на STDOUT.
Это также использует переменную окружения
ROUTER_ID, установленную
MySQL Router перед вызовом скрипта
master-key-reader
.
Опции master-key-reader
и
master-key-writer
должны использоваться вместе, и использование их означает, что опция
master_key_file
не должна быть определена в
mysqlrouter.conf
, поскольку главный ключ не
написан в файл главного ключа mysqlrouter.key
,
а вместо этого использует значение, предоставленную скриптом этой опции.
Это также написано в произведенный конфигурационный файл MySQL Router
как опция master-key-reader
[DEFAULT].
Пример скрипта bash reader.sh
:
#!/bin/bash KID_=$(keyctl search @us user ${ROUTER_ID} 2>/dev/null) if [ ! -z $KID_ ]; then keyctl pipe $KID_ fi
Пример использования этого:
shell> mysqlrouter --bootstrap=127.0.0.1:3310 \ --master-key-reader=./reader.sh \ --master-key-writer=./writer.sh
Это также затрагивает произведенный
mysqlrouter.conf
:
[DEFAULT] ... master-key-reader=reader.sh master-key-writer=writer.sh
Свойство | Значение |
---|---|
Командная строка | --account-host host_pattern |
Введено | 8.0.12 |
Тип | String |
По умолчанию | % |
Образец хоста, используемый для учетных записей, создаваемых MySQL Router во время процесса начальной загрузки. Это дополнительно и по умолчанию '%'.
Используйте эту опцию несколько раз, чтобы определить многократные образцы, в этом случае созданные аккаунты MySQL используют тот же самый пароль.
Маршрутизатор не выполняет проверку работоспособности параметров и не гарантирует, что образец позволяет соединяться.
Самонастройка повторно использует существующие учетные записи, удаляя и воссоздавая пользователя, этот процесс относится к каждому хосту.
Примеры:
# Если один хост shell> mysqlrouter --bootstrap localhost:3310 --account-host host1 # Или много хостов shell> mysqlrouter --bootstrap localhost:3310 --account-host host1 \ --account-host host2 --account-host host3
Свойство | Значение |
---|---|
Командная строка | --conf-use-sockets |
Для платформы | Linux |
Позволяет местные сокеты Unix.
Этот выбор используется во время самонастройки и добавляет опцию
socket
к
произведенному конфигурационному файлу.
Название произведенного файла сокета зависит от опций
mode
и protocol
.
С классическим протоколом файл называется
mysql.sock
в режиме read-write и
mysqlro.sock
в режиме read-only.
С протоколом X Protocol файл называется
mysqlx.sock
в режиме read-write и
mysqlxro.sock
в режиме read-only.
Опция отсутствует в Windows.
--report-host
Свойство | Значение |
---|---|
Командная строка | --report-host hostname |
Введено | 8.0.12 |
Тип | String |
Произвольно определяет имя хоста маршрутизатора вместо того, чтобы полагаться на автообнаружение, чтобы определить внешне видимое имя хоста, зарегистрированное в метаданных во время процесса начальной загрузки.
Маршрутизатор не проверяет или подтверждает, что поставляемое имя хоста достижимо, а только проверяет последовательность имени хоста на запрещенные символы. Только алфавитно-цифровые '-', '.' и '_' допустимы.
Поставляемое имя хоста написано в поле host_name таблицы mysql_innodb_cluster_metadata.hosts в хранилище метаданных MySQL InnoDB.
--conf-skip-tcp
Свойство | Значение |
---|---|
Командная строка | --conf-skip-tcp |
Для платформы | Linux |
Пропустить конфигурацию порта TCP для слушания поступающих связей.
См. также
--conf-use-sockets
.
Недоступна под Windows.
--conf-base-port port_num
Свойство | Значение |
---|---|
Командная строка | --conf-base-port port_num |
Тип | Integer |
Основное значение используется при слушании портов TCP, устанавливая
bind_port
для каждого запускаемого роутера.
Это используется для классических маршрутов read-write, и каждый дополнительный назначенный порт увеличивает значение. Порядок назначения портов classic read-write/read-only, затем x read-write/read-only. Например:
# Example without --conf-base-port shell> mysqlrouter --bootstrap root@localhost:3310 ... Classic MySQL protocol connections to cluster 'devCluster': - Read/Write Connections: localhost:6446 - Read/Only Connections: localhost:6447 X protocol connections to cluster 'devCluster': - Read/Write Connections: localhost:64460 - Read/Only Connections: localhost:64470 # Example demonstrating --conf-base-port behavior shell> mysqlrouter --bootstrap root@localhost:3310 --conf-base-port 6446 ... Classic MySQL protocol connections to cluster 'devCluster': - Read/Write Connections: localhost:6446 - Read/Only Connections: localhost:6447 X protocol connections to cluster 'devCluster': - Read/Write Connections: localhost:6448 - Read/Only Connections: localhost:6449
Свойство | Значение |
---|---|
Командная строка | --conf-bind-address address |
Тип | String |
По умолчанию | 0.0.0.0 |
Изменяет
bind_address
, установленное
--bootstrap
в произведенном конфигурационном
файле. По умолчанию самонастройка устанавливает
bind_address=0.0.0.0
для каждого маршрута, эта опция
изменяет это значение.
По умолчанию bind_address
=
127.0.0.1, если
bind_address
не определяется.
--read-timeout
num_seconds
Свойство | Значение |
---|---|
Командная строка | --read-timeout num_seconds |
Введено | 8.0.4 |
Тип | Integer |
По умолчанию | 30 |
Число секунд тайм-аута операций чтения сервера метаданных.
Это затрагивает операции чтения во время процесса начальной загрузки, а
также затрагивает нормальные операции MySQL Router, устанавливая связанную
опцию
read_timeout
в произведенном
файле mysqlrouter.conf
.
Эта опция установлена в пространстве имен
[DEFAULT]
.
--connect-timeout
num_seconds
Свойство | Значение |
---|---|
Командная строка | --connect-timeout num_seconds |
Введено | 8.0.4 |
Тип | Integer |
По умолчанию | 30 |
Число секунд тайм-аута при подключении к серверу метаданных.
Это затрагивает связи во время процесса начальной загрузки, а
также затрагивает нормальные операции MySQL Router, устанавливая связанную
опцию
connect_timeout
в произведенном
файле mysqlrouter.conf
.
Есть два варианта connect_timeout.
Вариант сервера метаданных определяется под пространством имен
[DEFAULT]
, в то время как вариант сервера MySQL
определяется под пространством имен [routing]
.
--user {user_name
|user_id
}
,
-u {user_name
|user_id
}
Свойство | Значение |
---|---|
Командная строка | --user {user_name|user_id}, -u {user_name|user_id}
|
Для платформы | Linux |
Тип | String |
Выполнить
mysqlrouter от имени
пользователя user_name
или числовой идентификатор пользователя
user_id
.
"User"
в этом контексте обращается к системной учетной записи, а не пользователю
MySQL, перечисленному в таблицах привилегий. При автонастройке все
произведенные файлы принадлежат этому пользователю, и это также устанавливает
связанную опцию user
.
Этот системный
user
определяется в конфигурационном файле
под пространством имен [DEFAULT]
.
Для получения дополнительной информации посмотрите документацию опции
user
, которая определяет
--user
.
Опция --user
требуется, выполняя
автонастройку как суперпользователь (uid=0). Хотя это не рекомендуется,
возможно, передавая имя как аргумент, такой как
--user=root.
Не работает в Windows.
--name
router_name
Свойство | Значение |
---|---|
Командная строка | --name router_name |
Тип | String |
На начальном шаге автонастройки определяет символьное имя для отдельного
экземпляра роутера. Этот выбор дополнительный и используется с
--directory
. Создавая многократные экземпляры
имена должны быть уникальными.
--force-password-validation
Свойство | Значение |
---|---|
Командная строка | --force-password-validation |
Для платформы | Linux |
По умолчанию MySQL Router пропускает механизм MySQL Server validate_password, вместо этого производит и использует СТРОГИЙ пароль на основе известных настроек validate_password по умолчанию. Это вызвано тем, что validate_password может формироваться пользователем, и маршрутизатор не может принять во внимание необычные параметры настройки.
Эта опция гарантирует, что проверка пароля (validate_password) не пропускается для произведенных паролей, это отключено по умолчанию.
--password-retries
num_retries
Свойство | Значение |
---|---|
Командная строка | --password-retries num_retries |
Тип | Integer |
По умолчанию | 20 |
Минимум | 1 |
Максимум | 10000 |
Определяет сколько раз MySQL Router должен попытаться произвести пароль, создавая учетную запись пользователя с правилами проверки пароля. Значение по умолчанию равняется 20. Действительный диапазон от 1 до 10000.
Наиболее вероятная причина неудачи происходит из-за validate_password с
необычными требованиями, такими как минимум 50 символов.
В этой ситуации также
--force-password-validation
установлена в
true и/или плагин mysql_native_password
MySQL
Server отключен (этот плагин позволяет обходить проверку).
--force
Свойство | Значение |
---|---|
Командная строка | --force |
Вызовите реконфигурацию по ранее настроенному экземпляру роутера.
--ssl-mode
mode
Свойство | Значение |
---|---|
Командная строка | --ssl-mode mode |
Тип | String |
По умолчанию | PREFERRED |
Допустимые значения |
|
Способ связи SSL для использования во время самонастройки и нормального
функционирования, соединяясь с сервером метаданных. Аналогично
--ssl-mode
в клиенте
mysql.
Во время самонастройки все связи с серверами метаданных, сделанные
роутером, будут использовать определенные варианты SSL. Если
ssl_mode
не определяется в конфигурации, она
по умолчанию PREFERRED. Во время нормального функционирования, после того,
как запускается роутер, его плагин Metadata Cache будет читать и соблюдать
все параметры настройки SSL.
Когда установлено в значение не по умолчанию (PREFERRED), запись
ssl_mode
вставляется под секцию
[metadata_cache]
в
произведенном конфигурационном файле.
Доступные значения: DISABLED, PREFERRED, REQUIRED, VERIFY_CA, and VERIFY_IDENTITY. PREFERRED значение по умолчанию. Как с клиентом mysql, значение нечувствительно к регистру.
Эквивалентный конфигурационный файл указан отдельно в
ssl_mode
.
--ssl-cert
file_path
Свойство | Значение |
---|---|
Командная строка | --ssl-key file_path |
Введено | 8.0.4 |
Тип | String |
Путь файла сертификата с открытым ключом SSL в формате PEM. Это
используется, чтобы облегчить клиентскую идентификацию во время процесса
начальной загрузки. Это непосредственно соответствует и использует
функциональность клиентской опции MySQL
--ssl-cert
.
Аналогично --ssl-key
,
этот выбор используется только во время автонастройки, которая использует
учетную запись root. Полезно, когда учетная запись root была создана с
REQUIRE X509, и поэтому требует, чтобы клиент подтвердил подлинность себя.
--ssl-key
file_path
Свойство | Значение |
---|---|
Командная строка | --ssl-key file_path |
Введено | 8.0.4 |
Тип | String |
Путь к файлу с закрытым ключом SSL в формате PEM. Это используется, чтобы
облегчить клиентскую идентификацию во время процесса начальной загрузки.
Это непосредственно соответствует и использует функциональность
клиентской опции MySQL
--ssl-key
.
Аналогично --ssl-key
,
этот выбор используется только во время автонастройки, которая использует
учетную запись root. Полезно, когда учетная запись root была создана с
REQUIRE X509, и поэтому требует, чтобы клиент подтвердил подлинность себя.
--ssl-cipher
ciphers
Свойство | Значение |
---|---|
Командная строка | --ssl-cipher ciphers |
Тип | String |
По умолчанию |
|
Разделенный двоеточиями (":") список шифров SSL, если SSL позволен.
--tls-version
versions
Свойство | Значение |
---|---|
Командная строка | --tls-version versions |
Тип | String |
По умолчанию |
|
Разделенный запятыми (",") список версий TLS, чтобы запросить, если SSL позволен.
--ssl-ca
file_path
Свойство | Значение |
---|---|
Командная строка | --ssl-ca file_path |
Тип | String |
По умолчанию |
|
Путь к файлу SSL CA, чтобы проверить сертификат сервера.
--ssl-capath
dir_path
Свойство | Значение |
---|---|
Командная строка | --ssl-capath dir_path |
Тип | String |
По умолчанию |
|
Путь к каталогу, содержащему файлы CA SSL, чтобы проверить сертификат сервера.
--ssl-crl
file_path
Свойство | Значение |
---|---|
Командная строка | --ssl-crl file_path |
Тип | String |
По умолчанию |
|
Путь к файлу SSL CRL, чтобы использовать, проверяя сертификат сервера.
--ssl-crlpath
dir_path
Свойство | Значение |
---|---|
Командная строка | --ssl-crlpath dir_path |
Тип | String |
По умолчанию |
|
Путь к каталогу, содержащему файлы SSL CRL, чтобы использовать, проверяя сертификат сервера.
--config file_path
, -c
file_path
Свойство | Значение |
---|---|
Командная строка | --config file_path, -c file_path |
Используется, чтобы обеспечить путь и имя файла для конфигурационного файла. Используйте этот выбор, если вы хотите использовать конфигурационный файл, расположенный в папке кроме местоположений по умолчанию.
Когда используется вместе с
--bootstrap
, и если конфигурационный файл уже
существует, копия текущего файла сохраняется с расширением
.bak, если произведенное содержание
конфигурационного файла отличается.
Существующие файлы .bak переписаны.
--extra-config file_path
, -a
file_path
Свойство | Значение |
---|---|
Командная строка | --extra-config file_path, -a file_path |
Используется, чтобы обеспечить дополнительный конфигурационный файл. Используйте этот выбор, если вы хотите разделить конфигурационный файл на две части для тестирования, многократных случаев применения, на той же самой машине и т.д.
Этот конфигурационный файл прочитан после главного конфигурационного файла. Если есть конфликты (опция установлена в многократных конфигурационных файлах), используются значения из файла, который загружается последниим.
--install-service
Свойство | Значение |
---|---|
Командная строка | --install-service |
Для платформы | Windows |
Установить роутер как сервис Windows, который автоматически запускается, когда загружается Windows. Имя сервиса MySQLRouter .
Этот процесс установки не проверяет конфигурационные файлы, переданные в
--config
.
Доступно только в Windows.
--install-service-manual
Свойство | Значение |
---|---|
Командная строка | --install-service-manual |
Для платформы | Windows |
Установить роутер как сервис Windows, который может быть запущен вручную. Имя сервиса MySQLRouter.
Доступно только в Windows.
--remove-service
Свойство | Значение |
---|---|
Командная строка | --remove-service |
Для платформы | Windows |
Удалить сервис роутера в Windows.
Доступно только в Windows.
--service
Свойство | Значение |
---|---|
Командная строка | --service |
Для платформы | Windows |
Запустить роутер как сервис Windows.
Доступно только в Windows.
--update-credentials-section
Свойство | Значение |
---|---|
Командная строка | --update-credentials-section section_name
|
Для платформы | Windows |
Доступно только в Windows и относится к хранилищу паролей.
--remove-credentials-section
section_name
Свойство | Значение |
---|---|
Командная строка | --remove-credentials-section section_name |
Для платформы | Windows |
Удалить данные авторизации для данной секции.
Доступно только в Windows и относится к хранилищу паролей.
--clear-all-credentials
Свойство | Значение |
---|---|
Командная строка | --clear-all-credentials |
Для платформы | Windows |
Очистите хранилище пароля, удалив все данные авторизации, сохраненные в нем.
Доступно только в Windows и относится к хранилищу паролей.
mysqlrouter_plugin_info это средство отладки, которое осматривает плагин MySQL Router для поиска потенциальных конфликтов и общих проблем.
Примеры как использовать:
shell> ./mysqlrouter_plugin_info --help Usage: ./mysqlrouter_plugin_info <mysqlrouter_plugin_file> <mysql_plugin_name> Example: ./mysqlrouter_plugin_info /usr/lib/mysqlrouter/routing.so routing To print help information: ./mysqlrouter_plugin_info --help To print application version: ./mysqlrouter_plugin_info --version shell> ./bin/mysqlrouter_plugin_info --version MySQLRouter Plugin Info App 8.0.3
shell> ./bin/mysqlrouter_plugin_info lib/mysqlrouter/routing.so routing { "abi-version": "2.0", "arch-descriptor": "i386/darwin//", "brief": "Routing MySQL connections between MySQL clients/connectors and servers", "plugin-version": "0.0.1", "requires": [], "conflicts": [] }
Когда запущен, MySQL Router читает список конфигурационных файлов, которые вместе составляют конфигурацию маршрутизатора. По крайней мере один конфигурационный файл требуется.
MySQL Router читает опции из конфигурационных файлов, которые напоминают традиционный формат файла INI с секциями и вариантами. Они определяют набор вариантов, когда MySQL Router запускается. Для получения информации о синтаксисе файла посмотрите раздел 4.1.
Варианты определяются согласно
секциям, которые диктуют значение выбора. Например,
user
в секции
[DEFAULT] отсылает к пользователю системы, запустившему роутер,
в то время как user
в секции
[metadata_cache] отсылает к
пользователю MySQL для доступа к метаданным.
Следующие таблицы разделены по секциям и суммируют опции MySQL Router, определенные в конфигурационном файле MySQL Router. Подробная информация о каждом из этих вариантов, таких как описания и позволенные значения, есть ниже этих таблиц.
Таблица 4.7. Секция [DEFAULT]
Опция | Описание | Тип |
---|---|---|
config_folder |
Путь к конфигурационным файлам | String |
connect_timeout |
Число секунд тайм-аута при попытках подключения к серверу метаданных | Integer |
keyring_path |
Путь к файлу брелока | String |
logging_folder |
Путь к журналам регистрации | String |
master_key_path |
Путь к основному файлу брелока | String |
master-key-reader |
Скрипт, который возвращает главный ключ на STDOUT | String |
master-key-writer |
Скрипт, который читает главный ключ из STDIN | String |
plugin_folder |
Путь к плагинам роутера | String |
runtime_folder |
Путь к файлам времени выполнения | String |
sinks |
Метод(ы) журналирования, чтобы получить данные | String |
thread_stack_size |
Размер в KB памяти, выделенной каждому стеку потока | Integer |
user |
Пользователь системы, который запустил роутер | String |
Таблица 4.8. Секция [routing]
Опция | Описание | Тип |
---|---|---|
bind_address |
Адрес роутера, также используется bind_port, если порт не определяется | String |
bind_port |
Порт по умолчанию, используется bind_address | Integer |
client_connect_timeout |
Максимальное количество секунд, чтобы получить пакеты от сервера MySQL | Integer |
connect_timeout |
Число секунд тайми-аута при подключении к серверу MySQL | Integer |
destinations |
Места назначения маршрутов как список разделенных запятой значений серверов MySQL или как определение кэша метаданных | String |
dynamic_config |
Путь к произведенному файлу JSON, используемому для отслеживания и хранения активных адресов сервера метаданных кластера MySQL InnoDB | String |
max_connect_errors |
Максимальное количество неудавшихся связей сервера MySQL перед отказом | Integer |
max_connections |
Максимальное количество связей, назначенных на сервер MySQL назначения | Integer |
mode |
Как маршрутизатор выбирает серверы назначения MySQL | String |
protocol |
Протокол для соединения с MySQL Server | String |
read_timeout |
Число секунд тайм-аута операций чтения сервера метаданных | Integer |
routing_strategy |
(Дополнительная) стратегия маршрутизации, как роутер выбирает серверы назначения MySQL | String |
socket |
Путь к файлу сокета unix | String |
Таблица 4.9. Секция [metadata_cache]
Опция | Описание | Тип |
---|---|---|
bootstrap_server_addresses |
Серверы MySQL с метаданными, как список разделенных запятой значений | String |
metadata_cluster |
Имя кластера InnoDB | String |
router_id |
Router ID | Integer |
ssl_mode |
Способ связи SSL для соединения с сервером метаданных, по умолчанию PREFERRED, если не задан | String |
ttl |
Time To Live в секундах | Integer |
user |
Пользователь MySQL, который получает доступ к схеме метаданных MySQL Server | String |
Таблица 4.10. Секция [logger]
Опция | Описание | Тип |
---|---|---|
level |
Уровень журналирования | String |
Таблица 4.11. Секция [http_server]
Опция | Описание | Тип |
---|---|---|
bind_address |
Адрес IPv4, который связан с портом HTTP | String |
port |
Порт TCP сервера HTTP | Integer |
require_realm |
Имя [http_auth_realm] | String |
ssl_cert |
Имя файла сертификата SSL | String |
ssl_cipher |
Одобренные шифры SSL | String |
ssl_dh_param |
Имя файла параметра DH | String |
ssl |
Позволяет поддержку TLSv1.2 или более позднего | Integer |
ssl_key |
Имя файла ключа SSL | String |
static_folder |
Каталог для статических файлов сервера HTTP | String |
Свойство | Значение |
---|---|
Тип | String |
По умолчанию | $router_basepath |
Путь к каталогу файла журнала MySQL Router. Файл журнала называют
mysqlrouter.log
, он создается по мере
надобности, но журнал добавлен к нему, если этот файл уже существует.
Установка logging_folder
к пустому значению
посылает сообщения на консоль (
stdout).
По умолчанию logging_folder
установлена
к основному пути в MySQL Router с версии 2.1.
Пример, который посылает записи в
/var/log/mysqlrouter/mysqlrouter.log
:
[DEFAULT] logging_folder = /var/log/mysqlrouter
Когда
--directory
используется, произведенный
конфигурационный файл устанавливает его в $directory/log/.
plugin_folder
Свойство | Значение |
---|---|
Тип | String |
По умолчанию (Other) | /usr/local/lib/mysqlrouter |
По умолчанию (Windows) |
|
Путь к плагинам MySQL Router. Этот каталог должен соответствовать инсталляционному каталогу MySQL Router. Необходимо установить это, только если у вас есть пользовательская установка, где плагины не находятся в стандартном инсталляционном местоположении.
По умолчанию:
/usr/local/lib/mysqlrouter
runtime_folder
Свойство | Значение |
---|---|
Тип | String |
По умолчанию (Other) | /run/mysqlrouter |
По умолчанию (Windows) |
|
Путь к файлам времени выполнения MySQL Router.
По умолчанию:
/run/mysqlrouter
master-key-writer
Свойство | Значение |
---|---|
Командная строка | --master-key-writer file_path |
Введено | 8.0.12 |
Тип | String |
Скрипт, который читает главный ключ из STDIN. Установите, применяя опцию
--master-key-writer
самонастройки.
master-key-reader
Свойство | Значение |
---|---|
Командная строка | --master-key-reader file_path |
Введено | 8.0.12 |
Тип | String |
Скрипт, который возвращает главный ключ к STDOUT.
Установите, применяя опцию самонастройки
--master-key-reader
.
config_folder
Свойство | Значение |
---|---|
Тип | String |
По умолчанию (Other) | /usr/local/etc/mysqlrouter |
По умолчанию (Windows) |
|
Путь к конфигурационным файлам MySQL Router.
config_folder
в настоящее время
устанавливается во время компиляции. Выбор может использоваться будущими
плагинами, когда у них есть свои собственные конфигурационные файлы.
По умолчанию:
/usr/local/etc/mysqlrouter
sinks
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Допустимые значения (Other) |
|
Допустимые значения (Windows) |
|
Различные методы регистрации, в которые посылают определенный уровень регистрации.
Поддержанные значения такие: consolelog
,
filelog
, eventlog
(в Windows) и syslog
(в Unix).
Используйте список разделенных запятой значений, чтобы
определить много вариантов.
Значение по умолчанию:
filelog
, если опция
logging_folder
не пустая в секции
"[DEFAULT]", иначе consolelog
.
Например, чтобы использовать файл, консоль и журнал событий каждое использование уровня отладки, надо написать в секции [logger]:
[logger] level=debug sinks=consolelog,eventlog,filelog
Свойство | Значение |
---|---|
Тип | String |
По умолчанию (Other) | /run/mysql-router/keyring-data |
По умолчанию (Windows) | %PROGRAMDATA%\MySQL\MySQL Router\keyring-data
|
Указывает местоположение файла брелка.
Автонастройка в масштабе всей системы не добавляет этот выбор к
произведенному конфигурационному файлу и предполагает, что файл брелка
расположен в каталоге времени выполнения в масштабе всей системы. Если
--directory
также используется,
тогда файл брелка хранится в соответствии с каталогом времени выполнения
соответствующего экземпляра, в подкаталоге
run/
в указанном каталоге.
Пути по умолчанию в масштабе всей системы используются, если этот выбор не определяется.
Пример использования настройки:
keyring_path = /opt/myrouter/data/keyring master_key_path = /opt/myrouter/mysqlrouter.key
Свойство | Значение |
---|---|
Тип | String |
По умолчанию (Other) | /run/mysql-router/mysqlrouter.key |
По умолчанию (Windows) | %PROGRAMDATA%\MySQL\MySQL Router\mysqlrouter.key
|
Местоположение файла главного ключа. Этот выбор позволяет декодирование, поскольку иначе его местоположение требуют при запуске.
Пути по умолчанию в масштабе всей системы используются, если этот выбор не определяется.
keyring_path = /opt/myrouter/data/keyring master_key_path = /opt/myrouter/mysqlrouter.key
Свойство | Значение |
---|---|
Тип | String |
Выполнить
mysqlrouter
как пользователь, имеющий имя
user_name
или числовой идентификатор пользователя
user_id
.
"User"
в этом контексте обращается к системной учетной записи, а не к пользователю
MySQL, перечисленному в таблицах привилегий. Это может также быть назначено
во время выполнения, используя опцию командной строки
--user
.
В Linux устанавливая роутер с официальными пакетами DEB или RPM, система создает местного пользователя системы и группу, названную "mysqlrouter" на хосте и запускает MySQL Router как этот пользователь по умолчанию. У этого пользователя нет доступа оболочки, и его корневой каталог указывает на каталог, где сохранен конфигурационный файл по умолчанию.
Цель этого выбора состоит в том, чтобы управлять MySQL Router как пользователем с ограниченными системными привилегиями. Если пользователь не существует в системе, или если предпринята попытка запуска роутера как root, происходит ошибка.
MySQL Router может быть настроен и запущен при любом пользователе операционной системы и не требует специальных привилегий, кроме доступа для чтения и записи к его собственным файлам. Файлы, к которым это получает доступ, включают плагины (read/execute), конфигурационный файл, журналы, файлы сокета UNIX (если используются) и другие.
По умолчанию конфигурационные файлы и файлы журнала написаны в масштабе
всей системы в такие каталоги, как /etc
и
/var/log
. Альтернативно, роутер может быть
настроен к отдельному собственному каталогу при помощи опции
--directory
:
shell> sudo mysqlrouter --bootstrap localhost:3310 \ --directory /a/path/myrouter --user snoopy
В этом примере роутер создает
/a/path/myrouter
и добавляет все произведенные файлы и каталоги сюда, они перезаписываемы
только пользователем системы snoopy
.
Кроме того, user
определяется в произведенном конфигурационном файле
/a/path/myrouter/mysqlrouter.conf
:
[DEFAULT] user=snoopy
Это отличается от
user
, определенного в секции
[metadata_cache]
, который
является пользователем MySQL.
bind_address
Свойство | Значение |
---|---|
Тип | String |
По умолчанию | 127.0.0.1 |
Информация связана с дополнительной опцией
bind_address
:
Записи направления могут быть связаны с сетевым интерфейсом (NIC).
По умолчанию
bind_address
=
127.0.0.1.
Если порт не определяется здесь, то требуется определение
bind_port
.
--bootstrap
устанавливает
bind_address=0.0.0.0
для каждого маршрута в
произведенном конфигурационном файле, это может быть изменено, используя
--conf-bind-address
.$port
(где вы определяете
$port) связывает все сетевые интерфейсы (IP) на хосте.
Адреса IPv6 могут также использоваться.bind_address = 127.0.0.1:7001
bind_address
не может быть перечислен в
списке
destinations
.
bind_port
Свойство | Значение |
---|---|
Тип | Integer |
Произвольно можно определить порт по умолчанию для
bind_address
, применяя
bind_port
. Если порт не формируется в
bind_address
,
bind_port
требуется и используется.
Эти три примера ниже показывают все результаты при bind_address = 127.0.0.1:7001
[routing:example_1] bind_port = 7001
[routing:example_2] bind_port = 7001 bind_address = 127.0.0.1
[routing:example_3] bind_address = 127.0.0.1:7001
Свойство | Значение |
---|---|
Для платформы | Linux |
Тип | String |
Сокеты позволены, используя
socket
, которая может быть определена с
или без опций TCP
bind_port
и
bind_address
:
[routing] socket = /tmp/mysqlrouter.sock destinations = a.example.com:3306,b.example.com:3307
При запуске MySQL Router откажется работать, если файл гнезда уже будет существовать или это не может быть записано.
Относительные пути приемлемы и на основе текущего рабочего каталога, где запускается роутер.
Маршрутизатор может слушать порты TCP и сокеты Unix
одновременно. Например, следующий пример
[routing]
действителен и формирует роутер, чтобы слушать связи на
localhost:1234 и
/tmp/mysqlrouter.sock
:
[routing:my_redirect] bind_address = localhost:1234 socket = /tmp/mysqlrouter.sock mode = read-write destinations = localhost:57121, localhost:57122, localhost:57123
Предел длины сокета Unix определен для платформы и не должен превышать позволенную длину системы.
protocol
Свойство | Значение |
---|---|
Тип | String |
По умолчанию | classic |
Допустимые значения |
|
Используется плагином направления, соединяя с сервером назначения MySQL, может быть установлен в "classic" (по умолчанию) или в "x" (X Protocol).
[routing:basic_failover] bind_port = 7001 mode = read-write destinations = 10.20.200.1:33060, 10.20.200.2:33060 protocol = x
Опция
protocol
также затрагивает порт по умолчанию,
используемый каждым местом назначения. Если целевой порт не формируется, то
порт по умолчанию 3306 для "classic" (по
умолчанию) и 33060 для "x" (X Protocol).
connect_timeout
Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию | 1 |
Минимум | 1 |
Максимум | 65536 |
Тайм-аут, используемый MySQL Router, соединяясь с местом назначения. Значение по умолчанию составляет 1 секунду. Значение не может быть неограниченным, недействительное значение приводит к ошибке конфигурации. Действительный диапазон между 1 и 65536. Необходимо поддерживать эту величину на низком уровне.
Например, используя режим read-write
,
значение может быть немного выше, чтобы ждать PRIMARY. Используя режим
read-only
для вторичных связей, низкое значение
имеет больше смысла, потому что роутер
выбирает новый сервер во время направления связи.
[routing] connect_timeout = 1
Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию (>= 8.0.14) | 15 |
По умолчанию (<= 8.0.13) | 30 |
Тайм-аут, используемый MySQL Router, соединяясь с сервером метаданных MySQL. Значение по умолчанию составляет 30 секунд.
[DEFAULT] connect_timeout = 30
Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию | 30 |
Тайм-аут, используемый MySQL Router, читая с сервера метаданных MySQL. Значение по умолчанию составляет 30 секунд.
[DEFAULT] read_timeout = 30
Свойство | Значение |
---|---|
Тип | String |
Предоставляет информацию о хосте для установления связей. Это признает список разделенных запятой значений адресов получателя или ссылку на кэш метаданных кластера InnoDB.
Использование в качестве примера с определенными хостами (статическая маршрутизация):
destinations = a.example.com,b.example.com,c.example.com
Если порт места назначения явно не установлен, то порт по умолчанию 3306,
если
protocol
= "classic" или не установлен
(по умолчанию), или 33060, если
protocol
установлен в "x".
Использование в качестве примера с кэшем метаданных кластера InnoDB:
destinations=metadata-cache://mycluster/default?role=PRIMARY
Варианты metadata-cache
URI:
role
: Определяет тип экземпляров,
доступных для связи. Приемлемые: PRIMARY, SECONDARY
или PRIMARY_AND_SECONDARY.
Опция
routing_strategy
в
mysqlrouter.conf
определяет стратегию,
по умолчанию стратегия направления кэша метаданных
round-robin.
disconnect_on_promoted_to_primary
:
Управляет, закрываются ли существующие связи клиента с вторичным, когда
вторичный становится primary. Значение по умолчанию "no" означает,
что существующие связи клиента с продвинутым вторичным не закрываются после
продвижения. Установите в URI
disconnect_on_promoted_to_primary=yes,
чтобы закрыть эти существующие связи.
Эта опция добавлена в MySQL Router 8.0.12.
disconnect_on_metadata_unavailable
:
Управляет, закрываются ли существующие связи клиента,
когда группа перегружена. Значение по умолчанию "no" значит, что существующие
связи клиента не закрываются, когда группа перегружена. Установите в URI
disconnect_on_metadata_unavailable=yes
, чтобы закрыть эти существующие связи.
Эта опция добавлена в MySQL Router 8.0.12.
Эти условия вызывают разъединения: связи с primary после того, как primary понижен до вторичного, и связи с узлом, который больше не является частью кастера.
dynamic_config
Свойство | Значение |
---|---|
Введено | 8.0.14 |
Тип | String |
Это отслеживает и хранит активные адреса сервера метаданных кластера MySQL
InnoDB и загружает их, если роутер перезапущен.
Эта функциональность активируется
--bootstrap
и предпочтена статической опции
bootstrap_server_addresses
.
Самонастройка определяет dynamic_config
в
файле mysqlrouter.conf
в секции [DEFAULT].
Это путь к произведенному файлу JSON
state.json
, который инициализируется адресами
сервера метаданных кластера InnoDB и репликацией ID группы,
дополнительная информация добавляется и обновляется, в то время
как роутер работает.
Пример записи в mysqlrouter.conf
:
[DEFAULT] dynamic_config=/opt/myrouter/data/state.json
Пример state.json
, произведенного
--bootstrap
:
{ "metadata-cache": { "group-replication-id": "4b9e817a-0254-11e9-9cc0-080027bb5030", "cluster-metadata-servers": [ "mysql://localhost:3310", "mysql://localhost:3320", "mysql://localhost:3330" ] }, "version": "1.0.0" }
Опции dynamic_config
и устаревшая
bootstrap_server_addresses
не могут быть установлены в одно и то же время. Для обратной совместимости,
если только bootstrap_server_addresses
установлена, это функционирует, как в предыдущих версиях, и эта динамическая
функциональность конфигурации не используется.
Эта опция добавлена в MySQL Router 8.0.14.
mode
Свойство | Значение |
---|---|
Тип | String |
Допустимые значения |
|
Устаревшая опция режима устанавливает планирование роутера и два поддержанных режима:
MySQL Router 8.0.4 добавил опцию
routing_strategy
как более гибкий способ
формировать график режима.
Опции mode
и
routing_strategy
не могут быть установлены в одно и то же время.
read-write: Как правило, для направления к master или primary экземпляру MySQL.
Mode Schedule: в режиме read-write весь трафик направлен к начальному адресу в списке. Если это потерпит неудачу, то MySQL Router попробует следующий элемент в списке, и продолжит пробовать каждый сервер MySQL в списке. Если больше серверов MySQL недоступно в списке, направление прерывается.
С
routing_strategy
то же самое поведение может
быть определено, используя
routing_strategy=next-available
вместо
mode=read-write
.
Первый успешный сервер MySQL, с которым связываются, сохраняется в памяти как первый, чтобы опробовать будущие поступающие связи. Это временное состояние означает, что об этом забывают после того, как MySQL Router перезапущен.
[routing:example_strategy_mode]
bind_port = 7001
destinations = primary1.example.com,primary2.example.com,primary3.example.com
mode = read-write
Так как опция mode
устарела,
предыдущий пример должен использовать
routing_strategy
:
[routing:example_strategy] bind_port = 7001 destinations = primary1.example.com,primary2.example.com,primary3.example.com routing_strategy = next-available
read-only: Как правило, для направления к вторичному или ведомому экземпляру MySQL.
Mode Schedule: режим read-only использует простой метод round-robin, чтобы пройти список MySQL Server. Это посылает первую связь первому адресу в списке, следующую связь второму адресу и так далее, и вернется к первому адресу после того, как список будет исчерпан.
С
routing_strategy
то же самое поведение может быть определено, используя
routing_strategy=round-robin
вместо
mode=read-only
.
Если сервер MySQL недоступен, то следующий сервер пробуют. Когда ни один из серверов MySQL в списке недоступен, направление прерывается.
Изолированы недоступные серверы MySQL. Их доступность перепроверяется и
когда доступны они отложены в конец списка
destinations
. Порядок назначения поддержан.
[routing:ro_route_mode]
bind_port = 7002
destinations = secondary1.example.com,secondary2.example.com,secondary3.example.com
mode = read-only
Так как опция mode
устарела, предыдущий пример
должен использовать routing_strategy
:
[routing:ro_route] bind_port = 7002 destinations = secondary1.example.com,secondary2.example.com,secondary3.example.com routing_strategy=round-robin
Альтернативно, предыдущий пример
destinations
мог использовать
metadata-cache, чтобы применить кэш
метаданных кластера InnoDB, который динамично формирует информацию о хосте:
[routing:ro_route] bind_port = 7002 destinations=metadata-cache://myCluster/default?role=SECONDARY routing_strategy=round-robin
Свойство | Значение |
---|---|
Введено | 8.0.4 |
Тип | String |
Допустимые значения |
|
Стратегия направления определяет, как MySQL Router выбирает серверы MySQL, с которыми соединиться.
MySQL Router 8.0.4 добавил опцию
routing_strategy
как более гибкий способ
определить стратегию. Ранее это поведение было определено, используя
устаревшую теперь
mode
.
routing_strategy
и
mode
не могут быть установлены в
одно и то же время.
Доступные стратегии:
first-available
:
новая связь направлена к первому доступному серверу из списка назначения.
В случае неудачи используется следующий доступный сервер.
Этот цикл продолжается, пока все серверы не недоступны.
next-available
: аналогично
first-available
, но новая связь направлена
первому доступному серверу из списка назначения. В отличие от этого,
first-available
, если сервер отмечен как
недостижимый, от него отказывается и никогда не использует снова в
качестве места назначения.
Эта стратегия обратно совместима с MySQL Router 2.x
mode
read-write.
Ее ограничения включают:
После того, как от всех узлов отказываются, нет никакого способа добавить серверы назад в список.
round-robin
: для выравнивания нагрузки
каждая новая связь установлена со следующим доступным
сервером циклическим способом.
round-robin-with-fallback
:
для выравнивания нагрузки каждая новая связь установлена со следующим
доступным вторичным сервером циклическим способом. Если вторичный сервер
недоступен, серверы из основного списка используются циклическим способом.
Если режим read-write, стратегия по умолчанию first-available с MySQL Router 8.0, но работает как next-available в MySQL Router 2.1.
round-robin
.round-robin
, доступные
стратегии first-available и
round-robin.round-robin
и
first-available, доступные стратегии
round-robin и
round-robin-with-fallback.round-robin
, доступные
стратегии first-available и
round-robin.Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию | 512 |
Минимум | 1 |
Максимум | 65536 |
Каждое направление может ограничить количество маршрутов или связей. Одно возможное применение должно помочь предотвратить возможные нападения Denial-Of-Service (DOS). Значение по умолчанию 512, действительный диапазон между 1 и 65536.
Это подобно переменной MySQL Server max_connections.
max_connections = 512
MySQL Router 2.1.5 и 8.0.4 добавили функциональности, которые увеличивают параллельный предел связи приблизительно с 500 до 5000. Это зависимое от операционной системы ограничение было изменено, чтобы использовать poll() вместо select().
thread_stack_size
Свойство | Значение |
---|---|
Введено | 8.0.12 |
Тип | Integer |
По умолчанию | 64 |
Минимум | 1 |
Максимум | 65535 |
Размер стека для каждого потока. Это измерено в килобайтах и по умолчанию 64.
[DEFAULT] thread_stack_size=128
Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию | 100 |
Минимум | 1 |
Максимум | 4294967295 |
Значение по умолчанию 100, действительный диапазон между 1 и 2^32 (4294967295, unsigned int).
Это подобно переменной сервера MySQL max_connect_errors.
Это может вызвать небольшую потерю производительности, если применение выполняет частые повторные соединения, потому что MySQL Router пытается обнаружить, присутствуют ли связанные со связью ошибки.
Успешная связь сбрасывает счетчик ошибок (с 8.0.14).
У каждого направления есть свой собственный список заблокированных хостов. Заблокированные клиенты получают ошибочный код MySQL Server error 1129 с немного отличающимся сообщением об ошибке: "1129: Too many connection errors from fail.example.com". Журналы роутера содержат дополнительную информацию для заблокированных клиентов, например: INFO [...] 1 authentication errors for fail.example.com (max 100) WARNING [...] blocking client host fail.example.com
max_connect_errors = 100
Свойство | Значение |
---|---|
Тип | Integer |
По умолчанию | 9 |
Минимум | 2 |
Максимум | 31536000 |
Аналог переменной сервера MySQL connect_timeout.
Значение по умолчанию 9, это меньше, чем умолчание в MySQL 5.7. Действительный диапазон между 2 и 31536000.
client_connect_timeout = 9
Свойство | Значение |
---|---|
Тип | Integer |
MySQL Router ID.
ssl_mode
Свойство | Значение |
---|---|
Тип | String |
По умолчанию | PREFERRED |
Допустимые значения |
|
Режим SSL для соединения с сервером метаданных MySQL. По умолчанию
PREFERRED
, если не задано.
Когда установлено в PREFERRED, самонастройка предупредит, когда SSL не будет использоваться, и связь с сервером метаданных не зашифрована.
Доступные значения: DISABLED, PREFERRED, REQUIRED, VERIFY_CA и VERIFY_IDENTITY. Как с mysql, значение нечувствительно к регистру.
Есть также возможность для самонастройки, посмотрите
--ssl-mode
.
bootstrap_server_addresses
Свойство | Значение |
---|---|
Deprecated | 8.0.14 |
Тип | String |
Список серверов MySQL с метаданными, которые могут быть применены. После того, как к метаданным получили доступ, кэш метаданных переключается на серверы, которые присутствуют в основном ReplicaSet, чтобы получить метаданные. Они также известны как bootstrap-серверы.
Эта опция устарела в MySQL Router 8.0.14 и больше не производится
процессом начальной загрузки. Вместо этого добавлена как замена
dynamic_config
.
user (MySQL)
Свойство | Значение |
---|---|
Тип | String |
Произведенный пользователь MySQL с привилегиями получить доступ к схеме
метаданных сервера MySQL. Пароль этого пользователя сгенерирован и
сохранен в зашифрованном виде в
keyring. По умолчанию ключ шифрования для этого брелока сохранен в
защищенном файле хранилища
master key, который определяется в конфигурационном файле.
Обычно эти пользователь и связанный пароль автоматически произведены во время
самонастройки. Связанные параметры командной строки
--force-password-validation
и
--password-retries
.
По умолчанию произведенный пароль проверяется validate_password.
Паролем полностью управляет роутер и сохраняет в местной системе брелока, используя учетную запись операционной системы, от которой работает MySQL Router. Это может использоваться роутером, чтобы соединиться с кластером InnoDB и получить текущую информацию о топологии. Сессии между роутером и сервером метаданных зашифрованы SSL по умолчанию.
То, где произведенные файлы брелока хранятся, зависит от того, как
работает самонастройка. Для отдельных установок (когда используется
--directory
), это сохранено под
run/
в отдельном каталоге.
Для установок в масштабе всей системы это сохранено в каталоге
времени выполнения в масштабе всей системы, и тот путь определен платформой.
Для получения дополнительной информации посмотрите
master_key_path
и
keyring_path
.
Этому пользователю назначают следующие привилегии:
Privileges needed by the Router account: On Metadata Server: SELECT ON mysql_innodb_cluster_metadata.* On Target Replica Sets: SELECT ON performance_schema.replication_group_members SELECT ON performance_schema.replication_group_member_stats
Произведенное имя пользователя следует этому шаблону:
mysql_router_
[0-9]{1,6}
_[0-9a-z]{12}
, где [0-9]{1,6}
числовой id роутера и [0-9a-z]{12}
случайных строчных алфавитно-цифровых символов. Id маршрутизатора снова
используется, если существует в mysqlrouter.conf
, и его длина не может превысить 6 цифр.
Этот пользователь отличается от
user
, определенного в секции
[DEFAULT]
, который
является пользователем системы.
metadata_cluster
Свойство | Значение |
---|---|
Тип | String |
Имя кластера InnoDB.
SQL-запрос, чтобы перечислить имена кластеров InnoDB: SELECT * FROM mysql_innodb_cluster_metadata.clusters;
ttl
Свойство | Значение |
---|---|
Тип (>= 8.0.12) | Numeric |
Тип (<= 8.0.11) | Integer |
По умолчанию (>= 8.0.12) | 0.5 |
По умолчанию (>= 8.0.4, <= 8.0.11) | 5 |
По умолчанию (<= 8.0.3) | 300 |
Минимум | 0 |
Максимум (>= 8.0.12) | 3600 |
Максимум (<= 8.0.11) | 4294967295 |
Время жизни (в секундах) информации в кэше метаданных.
Принимает целое число или значение с плавающей точкой. Степень детализации ограничивается миллисекундами, где 0.001 равняется одной миллисекунде. Точность усечена к поддержанному диапазону, например, ttl=0.0119 рассматривают как 11 миллисекунд. Значение 0 значит, что модуль кэша метаданных запрашивает метаданные непрерывно в жестком цикле.
Единственный поддержанный десятичный сепаратор '.' (точка) независимо от места действия, и экспоненциальное представление, например, ttl=1.6E-2 допустимо.
Поддержка чисел с плавающей точкой была добавлена в MySQL Router 8.0.12.
level
Свойство | Значение |
---|---|
Тип | String |
По умолчанию | INFO |
Допустимые значения |
|
Используйте плагин logger, чтобы зарегистрировать уведомления, ошибки и отладочную информацию. Доступные уровни регистрации: INFO (по умолчанию), DEBUG, WARNING, ERROR и FATAL. Эти значения нечувствительны к регистру.
INFO показывает все информационные сообщения, предупреждения и сообщения об ошибках. DEBUG показывает дополнительную диагностическую информацию из кода роутера, включая успешные маршруты.
[logger] level = DEBUG
Поведение вывода зависит от опции
logging_folder
.
Установка
logging_folder
к каталогу сохраняет в нем
файл журнала, названный mysqlrouter.log
.
Установка
logging_folder
к пустому значению или
отсутствие установки производит регистрацию на консоль. Это установлено в
секции [DEFAULT].
С MySQL Router 8.0.4 самонастройка принимает использование
конфигурационного файла --config
и использует определение уровня журналирования.
port
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | Integer |
По умолчанию | 8011 |
Порт TCP для запросов HTTP, по умолчанию 8011.
bind_address
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
По умолчанию | 0.0.0.0 |
Адрес IPv4 для HTTP port
, по умолчанию
0.0.0.0.
static_folder
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Основной каталог для статических запросов файла, это пусто по умолчанию. Пустая стоимость означает, что никакие статические файлы не используются.
require_realm
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Имя экземпляра [http_auth_realm].
ssl
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | Integer |
По умолчанию | 1 |
Допустимые значения |
|
Значение 1 позволяет SSL, 0 отключает его. Клиенты TLS, поддерживающие TLSv1.2 или позже, требуются. Это определяется в секции [http_server].
ssl_cert
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Имя файла сертификата и сертификатов цепочки в формате PEM, требуется, если ssl=1. Это определяется в секции [http_server].
ssl_key
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Имя файла ключа в формате PEM, требуется, если ssl=1. Это определяется в секции [http_server].
ssl_cipher
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Спецификация шифра (см. список openssl 'ciphers'). По умолчанию это список разделенных запятой значений всех одобренных шифров. Неизвестные шифры тихо проигнорированы. Терпит неудачу, если список шифров пуст и ssl=1. Это определяется в секции [http_server].
ssl_dh_param
Свойство | Значение |
---|---|
Введено | 8.0.16 |
Тип | String |
Прочитайте параметр DH от этого файла в формате PEM. Использует dh-param из RFC 5114 по умолчанию, если ssl=1. Это определяется в секции [http_server].
Вот основной пример направления связи к кластеру MySQL InnoDB
mycluster
. Включены протоколы
classic и X protocol, это использует связи TCP/IP вместо сокетов Unix
и это было произведено, используя
--bootstrap
как автономная конфигурация с
--directory
, установелнной в
/opt/routers/myrouter
.
В этом примере трафик чтения-записи (primary) посылают по портам 6446 (classic) или 64460 (x), трафик только чтения (secondaries) использует порты 6447 (classic) или 64470 (x).
Ключи секции направления (такие как mycluster_default_rw) дополнительные, но использовать эти описательные ключи секции полезно для отладки, а также позволяет многократные секции конфигурации для того же самого плагина.
destinations
ссылается на
metadata-cache, чтобы использовать
кэш метаданных кластера InnoDB, который динамично формирует информацию о
хосте. Альтернативно destinations
мог быть
списком разделенных запятой значений хостов, чтобы задать основное
направление связи без кластера InnoDB.
# File automatically generated during MySQL Router bootstrap [DEFAULT] logging_folder=/opt/routers/myrouter/log runtime_folder=/opt/routers/myrouter/run data_folder=/opt/routers/myrouter/data keyring_path=/opt/routers/router/data/keyring master_key_path=/opt/routers/myrouter/mysqlrouter.key connect_timeout=30 read_timeout=30 [logger] level = INFO [metadata_cache:mycluster] router_id=5 bootstrap_server_addresses=mysql://localhost:3310,mysql://localhost:3320,mysql://localhost:3330 user=mysql_router5_6owf3spq1c6n metadata_cluster=mycluster ttl=5 [routing:mycluster_default_rw] bind_address=0.0.0.0 bind_port=6446 destinations=metadata-cache://mycluster/default?role=PRIMARY routing_strategy=round-robin protocol=classic [routing:mycluster_default_ro] bind_address=0.0.0.0 bind_port=6447 destinations=metadata-cache://mycluster/default?role=SECONDARY routing_strategy=round-robin protocol=classic [routing:mycluster_default_x_rw] bind_address=0.0.0.0 bind_port=64460 destinations=metadata-cache://mycluster/default?role=PRIMARY routing_strategy=round-robin protocol=x [routing:mycluster_default_x_ro] bind_address=0.0.0.0 bind_port=64470 destinations=metadata-cache://mycluster/default?role=SECONDARY routing_strategy=round-robin protocol=x