Глава 4. Конфигурация
MySQL Router настраивается, используя необходимый конфигурационный файл,
дополнительные дополнительные конфигурационные файлы и некоторые опции также
доступны из командной строки.
Самонастройка это предпочтительный и общий подход к созданию
конфигурационного файла MySQL Router. См. опцию
--bootstrap . Самонастройка производит
полностью функциональный файл mysqlrouter.conf .
4.1. Синтаксис конфигурационного файла
Формат файла настройки напоминает традиционный формат файла 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
Специальное имя секции 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 |
Путь к папке для конфигурационных файлов |
4.2. Местоположения конфигурационного файла
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)
Ниже перечислено расположение файла по умолчанию, чтобы прочитать
конфигурационные файлы на популярных платформах Linux.
Выполните mysqlrouter --help , чтобы
увидеть местоположения конфигурационного файла по умолчанию
(и доступность) в вашей системе.
Местоположения конфигурационного файла по умолчанию (Windows)
Выполните mysqlrouter --help , чтобы
увидеть местоположения конфигурационного файла по умолчанию
(и доступность) в вашей системе.
4.3. Опции настройки
Опции конфигурационного файла и параметры командной строки служат
различным целям и описаны в отдельных местах.
При
bootstrapping параметры настройки
произведенного конфигурационного файла зависят от опций, переданых
mysqlrouter. Например, передача
--conf-use-sockets позволяет
сокетные соединения, определяя
socket для каждого маршрута в произведенном
конфигурационном файле. Или
--directory добавляет все произведенные файлы
и подкаталоги к единственному каталогу и регулирует произведенные значения
конфигурационного файла соответственно.
4.3.1. Командная строка MySQL Router
Эта секция описывает команды MySQL Router. Команда
mysqlrouter
используется для большинства задач, включая самонастройку и управление
MySQL Router, mysqlrouter_plugin_info
это дополнительное средство отладки.
4.3.1.1. Параметры командной строки
mysqlrouter
MySQL Router принимает параметры командной строки, которые передаются в
mysqlrouter, чтобы затронуть его поведение или
изменить маршрутизатор на основе кластера InnoDB.
Запуская Router, можно произвольно использовать
--config , чтобы перейти в местоположение
главного конфигурационного файла (иначе местоположение по умолчанию
используется), и
--extra-config
для дополнительного конфигурационного файла.
Самонастройка параметров командной строки затрагивает произведенные файлы
и каталоги, которые используются, запуская MySQL Router.
Обзор опций mysqlrouter
Таблица 4.2. Основные опции
Формат |
Описание |
--config |
Прочитайте параметры конфигурации из обеспеченного файла. |
--extra-config |
Прочитайте этот файл после того, как конфигурационные файлы будут
прочитаны из местоположений по умолчанию или из файлов,
определенных опцией --config. |
--help |
Вывод справочной информации. |
--user |
Запустить mysqlrouter как пользователь, имеющий указанное имя
или числовой идентификатор пользователя. |
--version |
Вывод информации о версии. |
Таблица 4.3. Опции самонастройки
Таблица 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
Описание опций mysqlrouter
--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 |
Изменяет произведенный
bind_port для каждого типа подключения.
По умолчанию произведенное значение bind_port
следующее: для классического протокола Read-Write = 6446 и Read-Only = 6447,
для X protocol Read-Write = 64460 и Read-Only = 64470. |
--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
Свойство |
Значение |
Командная строка
|
--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
Свойство |
Значение |
Командная строка
|
--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
Свойство |
Значение |
Командная строка
|
--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
Свойство |
Значение |
Командная строка
|
--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 |
Допустимые значения
|
PREFERRED
DISABLED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
|
Способ связи 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 и относится к хранилищу паролей.
4.3.1.2.
Параметры командной строки
mysqlrouter_plugin_info
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": []
}
4.3.2. Варианты конфигурационного файла
Когда запущен, MySQL Router читает список
конфигурационных файлов,
которые вместе составляют конфигурацию маршрутизатора. По крайней мере один
конфигурационный файл требуется.
MySQL Router читает опции из конфигурационных файлов, которые напоминают
традиционный формат файла INI с секциями и вариантами. Они определяют набор
вариантов, когда MySQL Router запускается.
Для получения информации о синтаксисе файла посмотрите
раздел 4.1.
Варианты определяются согласно
секциям, которые диктуют значение выбора. Например,
user в секции
[DEFAULT] отсылает к пользователю системы, запустившему роутер,
в то время как user в секции
[metadata_cache] отсылает к
пользователю MySQL для доступа к метаданным.
Следующие таблицы разделены по секциям и суммируют опции
MySQL Router, определенные в конфигурационном файле MySQL Router.
Подробная информация о каждом из этих вариантов, таких как описания и
позволенные значения, есть ниже этих таблиц.
Основные опции
Таблица 4.7. Секция [DEFAULT]
Опции маршрутизации
Таблица 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 |
Описания опций конфигурационного
файла MySQL Router
logging_folder
Свойство |
Значение |
Тип
| 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) |
consolelog
filelog
syslog |
Допустимые значения
(Windows) |
consolelog
filelog
eventlog
|
Различные методы регистрации, в которые посылают
определенный уровень регистрации.
Поддержанные значения такие: consolelog ,
filelog , eventlog
(в Windows) и syslog (в Unix).
Используйте список разделенных запятой значений, чтобы
определить много вариантов.
Значение по умолчанию:
filelog , если опция
logging_folder не пустая в секции
"[DEFAULT]", иначе consolelog .
Например, чтобы использовать файл, консоль и журнал событий каждое
использование уровня отладки, надо написать в секции
[logger]:
[logger]
level=debug
sinks=consolelog,eventlog,filelog
keyring_path
Свойство |
Значение |
Тип
| 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
master_key_path
Свойство |
Значение |
Тип
| 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
user (system)
Свойство |
Значение |
Тип
| 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 :
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
socket
Свойство |
Значение |
Для платформы
| 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 |
Допустимые значения
|
classic
x
|
Используется плагином направления, соединяя с сервером назначения 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
connect_timeout
Свойство |
Значение |
Тип
| Integer |
По умолчанию
(>= 8.0.14) |
15 |
По умолчанию
(<= 8.0.13) |
30 |
Тайм-аут, используемый MySQL Router, соединяясь с сервером метаданных
MySQL. Значение по умолчанию составляет 30 секунд.
[DEFAULT]
connect_timeout = 30
read_timeout
Свойство |
Значение |
Тип
| Integer |
По умолчанию
| 30 |
Тайм-аут, используемый MySQL Router, читая с сервера метаданных MySQL.
Значение по умолчанию составляет 30 секунд.
[DEFAULT]
read_timeout = 30
destinations
Свойство |
Значение |
Тип
| 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 |
Допустимые значения
| read-write
read-only
|
Устаревшая опция режима устанавливает планирование роутера
и два поддержанных режима:
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
routing_strategy
Свойство |
Значение |
Введено
| 8.0.4 |
Тип |
String |
Допустимые значения
| first-available
next-available
round-robin
round-robin-with-fallback
|
Стратегия направления определяет, как 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 :
для выравнивания нагрузки каждая новая связь установлена со следующим
доступным вторичным сервером циклическим способом. Если вторичный сервер
недоступен, серверы из основного списка используются циклическим способом.
max_connections
Свойство |
Значение |
Тип
| 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
max_connect_errors
Свойство |
Значение |
Тип
| 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
client_connect_timeout
Свойство |
Значение |
Тип
| Integer |
По умолчанию
| 9 |
Минимум |
2 |
Максимум |
31536000 |
Аналог переменной сервера MySQL
connect_timeout.
Значение по умолчанию 9, это меньше, чем умолчание в MySQL 5.7.
Действительный диапазон между 2 и 31536000.
client_connect_timeout = 9
router_id
Свойство |
Значение |
Тип
| Integer |
MySQL Router ID.
-
ssl_mode
Свойство |
Значение |
Тип
| String |
По умолчанию
| PREFERRED |
Допустимые значения
|
PREFERRED
DISABLED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
|
Режим 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 |
Допустимые значения
|
INFO
DEBUG
WARNING
ERROR
FATAL
|
Используйте плагин 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
0
|
Значение 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].
4.3.3. Пример конфигурационного файла
Вот основной пример направления связи к кластеру 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
|
|