在安裝生產環境部署的 InnoDB Cluster 之前,請確認您打算使用的伺服器執行個體符合下列需求。
-
InnoDB Cluster 使用群組複製,因此您的伺服器執行個體必須符合相同的需求。請參閱群組複製需求。AdminAPI 提供
dba.checkInstanceConfiguration()
方法來驗證執行個體是否符合群組複製需求,以及dba.configureInstance()
方法來設定執行個體以符合需求。注意使用沙箱部署時,執行個體會自動設定為符合這些需求。
-
用於群組複製的資料 (因此也用於 InnoDB Cluster 的資料) 必須儲存在
InnoDB
交易儲存引擎中。使用其他儲存引擎 (包括暫時的MEMORY
儲存引擎) 可能會在群組複製中造成錯誤。在使用群組複製和 InnoDB Cluster 的執行個體之前,請將其他儲存引擎中的任何表格轉換為使用InnoDB
。您可以透過在伺服器執行個體上設定disabled_storage_engines
系統變數,來防止使用其他儲存引擎,例如disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
在設定叢集時,任何伺服器執行個體上都不得有任何連入複製通道。群組複製自動建立的通道 (
group_replication_applier
和group_replication_recovery
) 允許在正被採用的複寫群組上使用。InnoDB Cluster 不支援手動設定的非同步複寫通道,除非這些通道是使用 AdminAPI 管理的。如果您要將現有的複寫拓撲移轉至 InnoDB Cluster 部署,而且需要在設定過程中暫時略過此驗證,則可以在建立叢集時使用force
選項來略過它。group_replication_tls_source
不得設定為mysql_admin
。您想要搭配 InnoDB Cluster 使用的任何執行個體都必須啟用效能結構描述。
-
MySQL Shell 用於設定伺服器以用於 InnoDB Cluster 的佈建指令碼需要存取 Python。在 Windows 上,MySQL Shell 包含 Python,而且不需要使用者設定。在 Unix 上,必須將 Python 納入 Shell 環境中。若要檢查您的系統是否已正確設定 Python,請發出
$ /usr/bin/env python
如果 Python 解譯器啟動,則不需要進一步動作。如果先前的命令失敗,請在
/usr/bin/python
和您選擇的 Python 二進位檔之間建立軟連結。如需詳細資訊,請參閱支援的語言。 執行個體必須在 InnoDB Cluster 內使用唯一的
server_id
。當您使用
作業時,如果Cluster
.addInstance(instance
)instance
的server_id
已由叢集中的執行個體使用,則該作業會失敗並出現錯誤。應該將執行個體設定為使用並行複製套用程式。請參閱第 7.5.6 節〈設定並行複製套用程式〉。
在設定執行個體以用於 InnoDB Cluster 的過程中,會設定使用執行個體所需的大部分系統變數。但是,AdminAPI 不會設定
transaction_isolation
系統變數,這表示它預設為REPEATABLE READ
。這不會影響單一主要叢集,但是如果您使用多個主要叢集,除非您在應用程式中依賴REPEATABLE READ
語意,否則建議使用READ COMMITTED
隔離等級。請參閱群組複製限制。執行個體的相關設定選項 (尤其是群組複製設定選項) 必須位於單一選項檔案中。InnoDB Cluster 僅支援伺服器執行個體的單一選項檔案,而且不支援使用
--defaults-extra-file
選項來指定其他選項檔案。對於使用執行個體選項檔案的任何 AdminAPI 作業,都必須指定主要檔案。如果您想要對不相關於 InnoDB Cluster 的設定選項使用多個選項檔案,則必須手動設定這些檔案、確保它們已正確更新 (考量使用多個選項檔案的優先順序規則),並確保與 InnoDB Cluster 相關的設定不會被其他無法辨識的選項檔案中的選項錯誤地覆寫。