這是一個簡短的範例,示範如何使用啟動來部署 MySQL Router 以使用 InnoDB Cluster。如需其他資訊,請參閱--bootstrap
和其他啟動選項。
此範例使用 --directory
選項建立獨立的 MySQL Router 執行個體、啟用 socket、使用 --account
自訂 Router 的 MySQL 使用者名稱,並將 --account-create
設定為 always
,以便僅在帳戶不存在時才啟動。此範例假設已存在名為 myCluster
的 InnoDB Cluster。
$> 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 組態了四個連接埠和四個 socket。預設會新增連接埠,而 socket 則透過傳入 --conf-use-sockets
來新增。名為 "myCluster" 的 InnoDB Cluster 是中繼資料的來源,並且 destinations
使用 InnoDB Cluster 中繼資料快取來動態組態主機資訊。相關的命令列選項
--conf-use-sockets
:選擇性地為所有四種類型的連線啟用 UNIX 網域 socket,如範例所示。--conf-skip-tcp
:選擇性地停用 TCP 連接埠,如果您只想要 socket,則可以與--conf-use-sockets
一起傳入的選項。--conf-base-port
:選擇性地變更連接埠的範圍,而不是使用預設連接埠。這會設定傳統讀寫 (PRIMARY) 連線的連接埠,預設為6446。--conf-bind-address
:選擇性地變更每個路由的 bind_address 值。
為了示範 MySQL Router 的行為,以下用戶端 (應用程式) 連接到連接埠 6446,但實際上會連線到連接埠 3310 上的 MySQL 執行個體。
$> mysql -u root -h 127.0.0.1 -P 6446 -p
...
mysql> select @@port;
+--------+
| @@port |
+--------+
| 3310 |
+--------+
1 row in set (0.00 sec)
如需其他範例,請參閱設定 MySQL 伺服器沙箱和部署生產 InnoDB Cluster。