3.1 Настройка MySQL Router
Вот краткий пример, демонстрирующий, как можно развернуть MySQL Router для использования кластера InnoDB с помощью настройки. Для дополнительной информации см. --bootstrap и другие параметры настройки.
В этом примере создается автономная инстанция MySQL Router с использованием параметра --directory, включены сокеты, используется --account для настройки имени пользователя MySQL Router, и устанавливается --account-create в значение always, чтобы выполнять настройку только в случае, если учетная запись еще не существует. В этом примере предполагается, что уже существует кластер InnoDB с именем myCluster.
$> mysqlrouter --bootstrap root@localhost:3310 --directory /tmp/myrouter
--conf-use-sockets --account routerfriend --account-create always
Please enter MySQL password for root:
# Bootstrapping MySQL Router instance at '/tmp/myrouter'...
Please enter MySQL password for routerfriend:
- Creating account(s)
- Verifying account (using it to run SQL queries that would be run by Router)
- Storing account in keyring
- Adjusting permissions of generated files
- Creating configuration /tmp/myrouter/mysqlrouter.conf
# MySQL Router configured for the InnoDB Cluster 'myCluster'
After this MySQL Router has been started with the generated configuration
$ mysqlrouter -c /tmp/myrouter/mysqlrouter.conf
the cluster 'myCluster' can be reached by connecting to:
## MySQL Classic protocol
- Read/Write Connections: localhost:6446, /tmp/myrouter/mysql.sock
- Read/Only Connections: localhost:6447, /tmp/myrouter/mysqlro.sock
## MySQL X protocol
- Read/Write Connections: localhost:6448, /tmp/myrouter/mysqlx.sock
- Read/Only Connections: localhost:6449, /tmp/myrouter/mysqlxro.sock
На этом этапе процесс настройки создал файл mysqlrouter.conf с необходимыми файлами в указанном каталоге, и результат показывает, как запустить эту инстанцию MySQL Router. Сгенерированный каталог MySQL Router выглядит примерно так:
$> ls -l | awk '{print $9}'
data/
log/
mysqlrouter.conf
mysqlrouter.key
run/
start.sh
stop.sh
Сгенерированный конфигурационный файл MySQL Router (mysqlrouter.conf) выглядит примерно так:
# File automatically generated during MySQL Router bootstrap
[DEFAULT]
logging_folder=/tmp/myrouter/log
runtime_folder=/tmp/myrouter/run
data_folder=/tmp/myrouter/data
keyring_path=/tmp/myrouter/data/keyring
master_key_path=/tmp/myrouter/mysqlrouter.key
connect_timeout=15
read_timeout=30
dynamic_state=/tmp/myrouter/data/state.json
[logger]
level = INFO
[metadata_cache:myCluster]
cluster_type=gr
router_id=1
user=routerfriend
metadata_cluster=myCluster
ttl=0.5
auth_cache_ttl=-1
auth_cache_refresh_interval=2
use_gr_notifications=0
[routing:myCluster_rw]
bind_address=0.0.0.0
bind_port=6446
socket=/tmp/myrouter/mysql.sock
destinations=metadata-cache://myCluster/?role=PRIMARY
routing_strategy=first-available
protocol=classic
[routing:myCluster_ro]
bind_address=0.0.0.0
bind_port=6447
socket=/tmp/myrouter/mysqlro.sock
destinations=metadata-cache://myCluster/?role=SECONDARY
routing_strategy=round-robin-with-fallback
protocol=classic
[routing:myCluster_x_rw]
bind_address=0.0.0.0
bind_port=6448
socket=/tmp/myrouter/mysqlx.sock
destinations=metadata-cache://myCluster/?role=PRIMARY
routing_strategy=first-available
protocol=x
[routing:myCluster_x_ro]
bind_address=0.0.0.0
bind_port=6449
socket=/tmp/myrouter/mysqlx.sock
destinations=metadata-cache://myCluster/?role=SECONDARY
routing_strategy=round-robin-with-fallback
protocol=x
В этом примере MySQL Router настроен на четыре порта и четыре сокета. Порты добавляются по умолчанию, а сокеты были добавлены путем передачи параметра --conf-use-sockets. Кластер InnoDB с именем "myCluster" является источником метаданных, а destinations используют кэш метаданных кластера InnoDB для динамической настройки информации о хосте. Соответствующие параметры командной строки:
--conf-use-sockets: При необходимости включите сокеты UNIX для всех четырех типов соединений, как показано в примере.--conf-skip-tcp: При необходимости отключите TCP-порты, параметр для передачи вместе с--conf-use-sockets, если вы хотите использовать только сокеты.--conf-base-port: При необходимости измените диапазон портов вместо использования по умолчанию. Это задает порт для классических соединений чтения-записи (PRIMARY) и по умолчанию равен 6446.--conf-bind-address: При необходимости измените значение bind_address для каждого маршрута.
Для демонстрации работы MySQL Router следующий клиент (приложение) подключается к порту 6446, но подключен к экземпляру MySQL на порту 3310.
$> mysql -u root -h 127.0.0.1 -P 6446 -p
...
mysql> select @@port;
+--------+
| @@port |
+--------+
| 3310 |
+--------+
1 row in set (0.00 sec)
Для получения дополнительных примеров см. Настройка среды MySQL Server Sandbox и .
© 2025 Oracle
Licensed under the GPLv2 License.