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