連線路由外掛程式會執行基於連線的路由,表示它會將封包轉送到伺服器,而不會檢查封包的內容。這是一種簡單的方法,可提供高輸送量。如需有關連線路由的其他一般資訊,請參閱第 1.3 節,「連線路由」。
以下顯示簡單的基於連線的路由設定。這些和其他選項記錄在第 4.3.3 節,「組態檔案選項」中。
[logger]
level = INFO
[routing:secondary]
bind_address = localhost
bind_port = 7001
destinations = foo.example.org:3306,bar.example.org:3306,baz.example.org:3306
routing_strategy = round-robin
[routing:primary]
bind_address = localhost
bind_port = 7002
destinations = foo.example.org:3306,bar.example.org:3306
routing_strategy = first-available
在這裡,我們使用連線路由將 MySQL 連線以循環方式路由到連接埠 7001 上的三個 MySQL 伺服器,如 round-robin routing_strategy
所定義。此範例也使用連接埠 7002 為其中兩部伺服器設定 first-available 策略。first-available 策略會使用目的地清單中的第一個可用伺服器。指派給每個 destinations
的 MySQL 執行個體數量由您決定,因為這只是一個範例。路由器不會檢查封包,也不會根據路由策略限制連線,因此應用程式必須決定將讀取和寫入要求傳送到哪裡,在本例中是連接埠 7001 或 7002。
假設所有三個 MySQL 執行個體都在執行中,接著傳入組態檔案來啟動 MySQL Router
$> ./bin/mysqlrouter -config=/etc/mysqlrouter-config.conf
現在 MySQL Router 會監聽連接埠 7001 和 7002,並將要求傳送到適當的 MySQL 執行個體。例如
$> ./bin/mysql --user=root --port 7001 --protocol=TCP
這會先連線到 foo.example.org,然後連線到 bar.example.org,接著連線到 baz.example.org,第四個呼叫會回到 foo.example.org。相反地,我們將連接埠 7002 的行為設定為不同
$> ./bin/mysql --user=root --port 7002 --protocol=TCP
這會先連線到 foo.example.org,其他要求會繼續連線到 foo.example.org,直到發生失敗為止,此時會改為使用 bar.example.org。如需有關此行為的其他資訊,請參閱 routing_strategy
。