MySQL Shell 可讓您使用各種 API,並支援指定連線,如使用類似 URI 字串或鍵值對連線至伺服器中所述。您可以使用類似 URI 字串或鍵值對來指定連線。AdminAPI 不支援其他連線參數。本文件將示範如何使用類似 URI 的連線字串來使用 AdminAPI。
對於 AdminAPI 操作,您只能使用 TCP/IP 連線和傳統 MySQL 通訊協定來連線至 InnoDB 叢集中的伺服器實例。AdminAPI 操作不支援使用 Unix Socket 和具名管道,AdminAPI 操作也不支援使用 X 通訊協定。伺服器實例之間的連線也適用相同的限制。
用戶端應用程式可以使用 X 通訊協定以及 Unix Socket 和具名管道來連線至 InnoDB 叢集中的實例。這些限制僅適用於使用 AdminAPI 命令的管理操作以及實例之間的連線。
例如,若要以使用者 myuser
的身分連線至位於 www.example.com
上、連接埠為 3306
的 MySQL 伺服器實例,請使用連線字串
myuser@www.example.com:3306
若要將此連線字串與 AdminAPI 操作 (例如 dba.configureInstance()
) 搭配使用,您需要確保連線字串被解譯為字串。例如,將連線字串以單引號 (') 或雙引號 (") 括起來。
如果您使用的是 AdminAPI 的 JavaScript 實作,請發出
mysql-js> > dba.configureInstance('myuser@www.example.com:3306')
如果您使用的是 AdminAPI 的 Python 實作,請發出
mysql-py> dba.configure_instance('myuser@www.example.com:3306')
如果您在預設的互動模式下執行 MySQL Shell,系統會提示您輸入密碼。AdminAPI 支援 MySQL Shell 的第 4.4 節,「可插入的密碼儲存區」,一旦您儲存用於連線至實例的密碼,系統就不會再提示您輸入密碼。
MySQL Shell 預設會嘗試使用 X 通訊協定來連線至伺服器實例。如果您在進行 AdminAPI 操作的連線時未指定連線類型,MySQL Shell 的自動通訊協定偵測會在建立傳統 MySQL 通訊協定工作階段之前,先短暫建立 X 通訊協定的工作階段。
除非您使用 MySQL Router 管理的連接埠連線至只有兩個次要 (唯讀) 實例的 InnoDB 叢集,否則此行為不會產生任何影響。在這種情況下,兩個實例之間的負載平衡無法正確管理,而且始終使用相同的實例。若要避免此副作用,您可以新增 --mc
或 --mysql
選項,明確指定傳統 MySQL 通訊協定工作階段。
當一個或多個伺服器確實無法連線時,某些開啟許多伺服器連線的操作可能需要很長時間才能執行,例如 cluster.status()
命令。連線逾時可能無法提供足夠的時間來取得回應。
您可以使用 MySQL Shell 組態選項 dba.connectTimeout
,以秒為單位設定使用 AdminAPI 之任何工作階段的預設連線逾時。