文件首頁
用於 VS Code 的 MySQL Shell


用於 VS Code 的 MySQL Shell  /  ...  /  Cluster 類別方法

一般可用性前版本:2024-07-17

A.2 Cluster 類別方法

以下章節提供 InnoDB Cluster 方法可用選項的詳細資訊。

新增 InnoDB Cluster 執行個體

將執行個體新增至 InnoDB Cluster。

  • JavaScript:addInstance(instance[, options])

  • Python:add_instance(instance[, options])

選項如下

  • label:新增執行個體的識別碼。

  • recoveryMethod:偏好的狀態復原方法。可以是 autocloneincremental。預設值為 auto

  • waitRecovery:整數值,指示命令是否應等待復原程序完成及其詳細程度。

  • password:執行個體連線密碼。

  • memberSslMode:在執行個體上使用的 SSL 模式。

  • ipWhitelist:允許連線至執行個體以進行群組複寫的主機清單。已棄用。

  • ipAllowlist:允許連線至執行個體以進行群組複寫的主機清單。

  • localAddress:字串值,其中包含要使用的群組複寫本機位址,而不是自動產生的位址。

  • groupSeeds:字串值,其中包含以逗號分隔的群組複寫對等位址清單,以取代自動產生的位址。已棄用且忽略。

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

  • exitStateAction:字串值,指示群組複寫結束狀態動作。

  • memberWeight:整數值,代表容錯移轉時自動主要選舉的百分比權重。

  • autoRejoinTries:整數值,定義執行個體在遭到驅逐後嘗試重新加入叢集的次數。

範例:將執行個體新增至由指定的變數 mycluster 代表的叢集。

mycluster.addInstance('root@localhost:3333')

如需詳細資訊,請參閱將執行個體新增至 InnoDB Cluster

檢查 InnoDB Cluster 執行個體

驗證與叢集相關的執行個體全域交易識別碼 (GTID) 狀態。

  • JavaScript:checkInstanceState(instance)

  • Python:check_instance_state(instance)

範例:分析接聽埠 3334 的執行個體,顯示在叢集上執行和清除的 GTID 所執行的 GTID,以判斷執行個體是否對叢集有效。

mycluster.checkInstanceState('root@localhost:3334')

如需詳細資訊,請參閱將執行個體新增至 InnoDB Cluster

建立 InnoDB ClusterSet

從現有的獨立 InnoDB Cluster 建立 InnoDB ClusterSet。

  • JavaScript:createClusterSet(dominate[, options])

  • Python:create_cluster_set(dominate[, options])

選項如下

  • dryRun:布林值,如果為 true,則會執行建立 InnoDB ClusterSet 的所有驗證和步驟,但不會進行任何變更。完成時會擲回例外狀況。

  • clusterSetReplicationSslMode:InnoDB ClusterSet 複寫通道的 SSL 模式。

  • replicationAllowedHost:字串值,用作內部複寫帳戶的主機名稱部分(表示 mysql_innodb_cs_###'@'hostname)。預設值為 %。InnoDB ClusterSet 的任何成員都必須能夠使用具有此主機名稱值的帳戶連線到任何其他成員。

範例:使用指派給叢集的變數 mycluster 建立名為 cs1 的 ClusterSet。

mycluster.createClusterSet('cs1')

如需詳細資訊,請參閱部署 InnoDB ClusterSet

描述 InnoDB Cluster

  • JavaScript:describe()

  • Python:describe()

範例:使用指定的變數 mycluster 描述叢集,包括其所有資訊、複本集和執行個體。

mycluster.describe()

中斷連線 InnoDB Cluster

中斷連線叢集物件使用的所有內部工作階段。

  • JavaScript:disconnect()

  • Python:disconnect()

範例:使用指定的變數 mycluster 中斷連線叢集與所有內部工作階段的連線。

mycluster.disconnect()

解散 InnoDB Cluster

解散叢集。

  • JavaScript:dissolve([options])

  • Python:dissolve([options])

選項如下

  • force:布林值,用於確認必須執行解散作業,即使無法連線到叢集的某些成員,或在等待成員趕上複寫變更時達到逾時。預設設定為 false

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

範例:使用指定的變數 mycluster 停止群組複寫並取消註冊所有叢集中繼資料的成員。

mycluster.dissolve()

隔離 InnoDB Cluster

從所有流量隔離 InnoDB Cluster。

  • JavaScript:fenceAllTraffic()

  • Python:fence_all_traffic()

範例:使用指定的變數 mycluster 從所有流量隔離叢集。

mycluster.fenceAllTraffic()

如需詳細資訊,請參閱在 InnoDB ClusterSet 中隔離叢集

從寫入流量隔離 InnoDB Cluster

從寫入流量隔離叢集。

  • JavaScript:fenceWrites()

  • Python:fence_writes()

範例:使用指定的變數 mycluster 從所有寫入流量隔離叢集。

mycluster.fenceWrites()

如需詳細資訊,請參閱在 InnoDB ClusterSet 中隔離叢集

從仲裁遺失還原 InnoDB Cluster

從仲裁遺失中還原叢集。如果群組被分割或發生的崩潰次數超過可容忍的次數,就可能發生這種情況。

forceQuorumUsingPartitionOf() 方法會將叢集從仲裁遺失的情境中還原為可運作的狀態。如果群組被分割或發生的崩潰次數超過可容忍的次數,就可能發生這種情況。當您使用此方法時,從給定執行個體定義的視角來看,所有線上成員都會新增至群組。

  • JavaScript:forceQuorumUsingPartitionOf(instance[, password])

  • Python:force_quorum_using_partition_of(instance[, password])

範例:使用指派的變數 mycluster,從仲裁遺失中還原叢集。執行個體定義是執行個體的連線資料。

mycluster.forceQuorumUsingPartitionOf('root@localhost:3341', 'password')

如需更多資訊,請參閱還原和重新啟動 InnoDB 叢集

取得 InnoDB ClusterSet

傳回代表 InnoDB ClusterSet 的物件。

  • JavaScript:getClusterSet()

  • Python:get_cluster_set()

範例:使用指派的 mycluster 變數,將 InnoDB ClusterSet 指派給名為 myclusterset 的變數。

var myclusterset = mycluster.getClusterSet()

取得 InnoDB ClusterSet 名稱

擷取 InnoDB 叢集的名稱。

  • JavaScript:getName()

  • Python:get_name()

範例:使用指派的變數 mycluster,傳回叢集的網域名稱。

mycluster.getName()

叢集說明

提供有關 Cluster 類別及其成員的說明。

  • JavaScript:help([member])

  • Python:help([member])

若要查看使用 mycluster 指派變數的 fenceWrites 方法的說明詳細資料,請輸入

mycluster.help("fenceWrites")

列出 MySQL Router

列出路由器執行個體。

  • JavaScript:listRouters([options])

  • Python:list_routers([options])

選項如下

  • onlyUpgradeRequired:布林值,可啟用篩選,以便僅包含支援較舊版本的元資料結構描述且需要升級的路由器執行個體。

範例:使用指派的變數 mycluster,傳回列出與叢集相關聯的路由器執行個體的 JSON 物件。

mycluster.listRouters()

列出選項

列出 InnoDB 叢集的叢集組態選項。

  • JavaScript:options([options])

  • Python:options([options])

範例:傳回描述叢集組態選項的 JSON 物件。

mycluster.options()

重新加入 InnoDB 叢集

將執行個體重新加入叢集。

  • JavaScript:rejoinInstance(instance[, options])

  • Python:rejoin_instance(instance[, options])

選項如下

  • password:執行個體連線密碼。

  • memberSslMode:在執行個體上使用的 SSL 模式。

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

  • ipWhitelist:允許連線至執行個體以進行群組複寫的主機清單。已淘汰。

  • ipAllowlist:允許連線至執行個體以進行群組複寫的主機清單。

範例:使用指派的變數 mycluster,包括密碼選項,將執行個體重新加入叢集。

mycluster.rejoinInstance('root@localhost:3342',{password:
'password'})

如需更多資訊,請參閱將執行個體重新加入叢集

從 InnoDB 叢集中移除執行個體

從 InnoDB 叢集中移除執行個體。

  • JavaScript:removeInstance(instance[, options])

  • Python:remove_instance(instance[, options])

選項如下

  • password:執行個體連線密碼。

  • force:布林值,表示如果無法連線到執行個體,是否必須移除執行個體(即使僅從元資料中移除)。預設值設定為 false

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

範例:從叢集中移除執行個體。在此範例中,密碼會以選項形式包含。

mycluster.removeInstance('root@localhost:3342',{password:
'Password1'})

如需更多資訊,請參閱從 InnoDB 叢集中移除執行個體

移除 MySQL Router 執行個體的元資料

移除路由器執行個體的元資料。

  • JavaScript:removeRouterMetadata(routerDef)

  • Python:remove_router_metadata(routerDef)

範例:使用指派的變數 mycluster,從叢集的元資料中移除已註冊的 MySQL Router 執行個體 myRouter1

mycluster.removeRouterMetadata('myRouter1')

重新掃描 InnoDB 叢集

重新掃描 InnoDB 叢集。

  • JavaScript:rescan([options])

  • Python:rescan([options])

選項如下

  • addInstances:包含要新增至元資料的新作用中執行個體之連線資料的清單,或 auto 以自動將遺失的執行個體新增至元資料。

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

  • removeInstances:包含要從元資料中移除的過時執行個體之連線資料的清單,或 auto 以自動從元資料中移除過時的執行個體。

  • updateTopologyMode:布林值,用來表示是否應該更新元資料中的拓樸模式(單一主要或多重主要)(true),以符合叢集正在使用的模式(false)。預設情況下,不會更新元資料(false)。已淘汰。

  • upgradeCommProtocol:布林值。設定為 true 以將群組複寫通訊協定升級至可能的最高版本。

範例:重新掃描叢集是否有新的和過時的群組複寫執行個體,以及已使用拓樸模式的變更,例如,單一主要和多重主要。

mycluster.rescan()

重設 InnoDB 叢集之復原帳戶的密碼

重設 InnoDB 叢集之復原帳戶的密碼。

  • JavaScript:resetRecoveryAccountsPassword(options)

  • Python:reset_recovery_accounts_password(options)

選項如下

  • force:布林值,表示在嘗試重設任何執行個體的密碼時發生錯誤時,作業是否將繼續,例如,如果任何執行個體未上線。預設值設定為 false

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

範例:重設叢集使用的所有內部復原使用者帳戶的密碼。

在此範例中,會使用布林值 interactive 模式。

mycluster.resetRecoveryAccountsPassword({interactive:true})

如需更多資訊,請參閱InnoDB 叢集的使用者帳戶

變更 InnoDB 叢集成員中的選項值

變更 InnoDB 叢集成員中選項的值。

  • JavaScript:setInstanceOption(instance, option, value)

  • Python:set_instance_option(instance, option, value)

選項如下

  • tag:<option>:要與叢集相關聯的內建和使用者定義標籤。

  • exitStateAction:表示群組複寫結束狀態動作的字串值。

  • memberWeight:整數值,代表容錯移轉時自動主要選舉的百分比權重。

  • autoRejoinTries:整數值,定義執行個體在遭到驅逐後嘗試重新加入叢集的次數。

  • label:執行個體的字串識別碼。

範例:變更 memberWeight

mycluster.setInstanceOption("root@localhost:3341","memberWeight", 95)

如需更多資訊,請參閱標記元資料

變更 InnoDB 叢集中的選項值

變更整個 InnoDB 叢集的選項值。

  • JavaScript:setOption(option, value)

  • Python:set_option(option, value)

選項如下

  • tag:<option>:要與叢集相關聯的內建和使用者定義標籤。

  • exitStateAction:字串值,指示群組複寫結束狀態動作。

  • memberWeight:整數值,代表容錯移轉時自動主要選舉的百分比權重。

  • AutoRejoinTries:整數值,用於定義執行個體在被驅逐後嘗試重新加入叢集的次數。

  • Label:執行個體的字串識別碼。

範例:使用指派的變數 mycluster,將叢集的名稱標籤變更為 my_new_cluster

mycluster.setOption("clusterName", "my_new_cluster_name")

如需更多資訊,請參閱標記元資料

為 InnoDB 叢集選出新的主要執行個體

選出特定的 InnoDB 叢集成員作為新的主要執行個體。

  • JavaScript:setPrimaryInstance(instance)

  • Python:set_primary_instance(instance)

範例:使用 mycluster 的指派變數,將新的主要執行個體設定為在連接埠 3335 上接聽的執行個體。

mycluster.setPrimaryInstance('root@localhost:3335')

如需更多資訊,請參閱變更 InnoDB 叢集的拓樸

建立或升級 InnoDB 叢集管理員帳戶

建立或升級 InnoDB 叢集管理員帳戶。

  • JavaScript:setupAdminAccount(user, options)

  • Python:setup_admin_account(user, options)

選項如下

  • password:InnoDB 叢集管理員帳戶的密碼。

  • dryRun:布林值,用於啟用帳戶設定程序的試執行。預設值為 false

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

  • update:必須啟用的布林值,以允許更新現有帳戶的權限和/或密碼。預設值為 false

範例:使用 mycluster 的指派變數,建立或升級具有管理 InnoDB 叢集所需權限的 MySQL 使用者帳戶。例如,若要使用密碼 Password1 設定 demo-user

mycluster.setupAdminAccount("demo_user", {password:"Password1"})

如需更多資訊,請參閱為 AdminAPI 建立使用者帳戶

建立或升級要與 MySQL Router 搭配使用的 MySQL 帳戶

建立或升級要與 MySQL Router 搭配使用的 MySQL 帳戶。

  • JavaScript:setupRouterAccount(user, options)

  • Python:setup_router_account(user, options)

選項如下

  • password:MySQL Router 帳戶的密碼。

  • dryRun:布林值,用於啟用帳戶設定程序的試執行。預設值為 false

  • interactive:布林值,用於停用或啟用命令執行中的精靈,表示將根據設定的值提供或不提供提示和確認。預設值等於 MySQL Shell 精靈模式。

範例:強制參數 user 是 MySQL 帳戶的名稱,該帳戶將被建立或升級,並由 MySQL Router 使用。

mycluster.setupRouterAccount('test@localhost:3306')

更多資訊請參閱設定 MySQL Router 使用者

InnoDB Cluster 的狀態

描述 InnoDB Cluster 的狀態。

  • JavaScript:status([options])

  • Python:status([options])

extended 選項值為:

  • 0:停用命令詳細輸出(預設)。

  • 1:包含關於中繼資料版本、群組協定版本、群組名稱、叢集成員 UUID、群組複寫回報的叢集成員角色與狀態,以及已隔離的系統變數清單資訊。

  • 2:包含關於連線和套用程式處理的交易資訊。

  • 3:包含關於每個叢集成員複寫機制的更詳細統計資訊。

  • Boolean:等同於指定 0 (false) 或 1 (true)。

範例:使用已指定的變數 mycluster,傳回描述叢集狀態的 JSON 物件。

mycluster.status()

將 InnoDB Cluster 切換為多主模式

將以單主模式執行的 InnoDB Cluster 變更為多主模式。

  • JavaScript:switchToMultiPrimaryMode()

  • Python:switch_to_multi_primary_mode()

範例:將以單主模式執行的叢集變更為多主模式。例如,使用已指定的變數 mycluster

mycluster.switchToMultiPrimaryMode()

如需更多資訊,請參閱變更 InnoDB 叢集的拓樸

將 InnoDB Cluster 切換為單主模式

將 InnoDB Cluster 切換為單主模式。

  • JavaScript:switchToSinglePrimaryMode([instance])

  • Python:switch_to_single_primary_mode([instance])

範例:使用 mycluster 已指定的變數,變更監聽連接埠執行個體的主機名稱與連接埠號碼,使其成為新的主節點。

mycluster.switchToSinglePrimaryMode('root@localhost:3341')

如果沒有提供執行個體定義,則新的主節點將是具有最高成員權重的執行個體 (如果成員權重相同,則會是 UUID 最小的執行個體)。

如需更多資訊,請參閱變更 InnoDB 叢集的拓樸

解除 InnoDB Cluster 的隔離

解除 InnoDB Cluster 的隔離,並恢復寫入流量。

  • JavaScript:unfenceWrites()

  • Python:unfence_writes()

範例:使用 mycluster 已指定的變數,恢復先前隔離寫入流量的叢集的寫入流量。

mycluster.unfenceWrites()

如需詳細資訊,請參閱在 InnoDB ClusterSet 中隔離叢集