屬於叢集的執行個體會使用不同的埠進行不同類型的通訊。如果您使用 XCOM
通訊堆疊,除了預設的 port
(3306,用於透過傳統 MySQL 通訊協定的用戶端連線) 和 mysqlx_port
(預設為 33060,用於 X 通訊協定用戶端連線) 之外,叢集中執行個體之間的內部連線也需要一個埠,此埠不適用於用戶端連線。此埠由 localAddress
選項配置,此選項會配置 group_replication_local_address
系統變數,而且此埠必須開啟,叢集中的執行個體才能彼此通訊。例如,如果您的防火牆封鎖此埠,執行個體將無法彼此通訊,且叢集無法運作。同樣地,如果您的執行個體使用 SELinux,您需要確保 InnoDB 叢集使用的所有必要埠都已開啟,執行個體才能彼此通訊。請參閱設定 MySQL 功能的 TCP 埠內容和MySQL Shell 埠。
當您建立叢集或將執行個體新增至叢集時,預設會將目標執行個體的 port
值乘以 10,然後將結果加一,以計算 localAddress
埠。例如,當目標執行個體的 port
為預設值 3306 時,計算出的 localAddress
埠為 33061。您應確保叢集執行個體使用的埠號與 localAddress
的計算方式相容。例如,如果用於建立叢集的伺服器執行個體的 port
號碼高於 6553,則 dba.createCluster()
作業會失敗,因為計算出的 localAddress
埠號超過最大有效埠 65535。若要避免這種情況,請在您用於 InnoDB 叢集的執行個體上使用較低的 port
值,或手動指派 localAddress
值,例如
mysql-js> dba.createCluster('testCluster', {'localAddress':'icadmin@ic-1:33061'}
如果您使用 MYSQL
通訊堆疊,則 localAddress 值會使用與 MySQL 伺服器相同的網路位址自動產生。不需要額外的內部埠/位址。請參閱第 7.5.9 節「配置群組複寫通訊堆疊」。
localAddress
可以手動定義,但使用的埠必須是 MySQL 正在接聽的埠,如 bind_address
所定義。