以下函數可用於啟用和停用群組成員在特定情況下採取的動作,以及將所有成員動作的設定重設為預設值。它們只能由具有 GROUP_REPLICATION_ADMIN
權限或已棄用的 SUPER
權限的管理員使用。
您可以使用 group_replication_enable_member_action
和 group_replication_disable_member_action
函數在群組的主伺服器上設定成員動作。然後,成員動作設定(包含所有成員動作以及它們是否啟用或停用)會使用群組複寫的群組訊息傳播到其他群組成員和加入的成員。這表示群組成員在特定情況下會以相同的方式執行動作,而且您只需要在主伺服器上使用該函數。
只要安裝群組複寫外掛程式,這些函數也可以在非群組成員的伺服器上使用。在這種情況下,成員動作設定不會傳播到任何其他伺服器。
group_replication_reset_member_actions
函數只能在非群組成員的伺服器上使用。它會將成員動作設定重設為預設設定,並重設其版本號碼。伺服器必須可寫入(read_only
系統變數設定為 OFF
),並且必須已安裝群組複寫外掛程式。
可用的成員動作如下
-
mysql_disable_super_read_only_if_primary
此成員動作會在成員當選為群組主伺服器之後執行,也就是
AFTER_PRIMARY_ELECTION
事件。成員動作預設為啟用。您可以使用group_replication_disable_member_action()
函數停用它,並使用group_replication_enable_member_action()
函數重新啟用它。當啟用此成員動作並執行時,主伺服器上的超級唯讀模式會停用,因此主伺服器會變成讀寫模式,並接受來自複寫來源伺服器和用戶端的更新。這是正常情況。
當停用此成員動作且未執行時,主伺服器在當選後仍處於超級唯讀模式。在此狀態下,它不接受任何用戶端的更新,即使是具有
CONNECTION_ADMIN
或SUPER
權限的用戶端也一樣。它會繼續接受複寫執行緒執行的更新。這種設定表示,當群組的目的是為另一個群組提供次要備份以進行災難容錯時,您可以確保次要群組與第一個群組保持同步。-
mysql_start_failover_channels_if_primary
此成員動作會在成員當選為群組主伺服器之後執行,也就是
AFTER_PRIMARY_ELECTION
事件。成員動作預設為啟用。您可以使用group_replication_disable_member_action()
函數停用它,並使用group_replication_enable_member_action()
函數重新啟用它。當啟用此成員動作時,如果您在通道的
CHANGE REPLICATION SOURCE TO
陳述式中設定SOURCE_CONNECTION_AUTO_FAILOVER=1
,則非同步連線容錯移轉會針對群組複寫主伺服器上的複寫通道啟用。當功能啟用且設定正確時,如果正在複寫的主伺服器離線或進入錯誤狀態,則新的主伺服器在當選後會在同一通道上開始複寫。這是正常情況。如需設定此功能的說明,請參閱 第 19.4.9.2 節「非同步複寫容錯移轉複本」。當此成員動作停用時,複本不會進行非同步連線容錯移轉。如果主伺服器離線或進入錯誤狀態,則通道的複寫會停止。請注意,如果有多個通道設定
SOURCE_CONNECTION_AUTO_FAILOVER=1
,則成員動作會涵蓋所有通道,因此無法透過此方法個別啟用和停用它們。請設定SOURCE_CONNECTION_AUTO_FAILOVER=0
來停用個別通道。
有關成員動作以及如何檢視成員動作組態的更多資訊,請參閱第 20.5.1.5 節「配置成員動作」。
group_replication_disable_member_action()
停用成員動作,使其在指定情況下不執行。如果您使用此函式的伺服器是群組的一部分,它必須是單一主伺服器模式下群組中的目前主伺服器,而且必須是多數派的一部分。變更後的設定會傳播到其他群組成員和加入的成員,因此它們在指定情況下都會以相同的方式運作,您只需要在主伺服器上使用此函式即可。
語法
STRING group_replication_disable_member_action(name, event)
引數
name
:要停用的成員動作名稱。event
:觸發成員動作的事件。
傳回值
一個字串,包含操作的結果,例如是否成功。
範例
SELECT group_replication_disable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION");
有關更多資訊,請參閱第 20.5.1.5 節「配置成員動作」。
group_replication_enable_member_action()
啟用成員動作,讓成員在指定情況下執行。如果您使用此函式的伺服器是群組的一部分,它必須是單一主伺服器模式下群組中的目前主伺服器,而且必須是多數派的一部分。變更後的設定會傳播到其他群組成員和加入的成員,因此它們在指定情況下都會以相同的方式運作,您只需要在主伺服器上使用此函式即可。
語法
STRING group_replication_enable_member_action(name, event)
引數
name
:要啟用的成員動作名稱。event
:觸發成員動作的事件。
傳回值
一個字串,包含操作的結果,例如是否成功。
範例
SELECT group_replication_enable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION");
有關更多資訊,請參閱第 20.5.1.5 節「配置成員動作」。
group_replication_reset_member_actions()
將成員動作組態重設為預設設定,並將其版本號碼重設為 1。
group_replication_reset_member_actions()
函式只能在目前不是群組一部分的伺服器上使用。伺服器必須是可寫入的(read_only
系統變數設定為OFF
),並且已安裝 Group Replication 外掛程式。如果您打算將其作為不含成員動作或具有不同成員動作的獨立伺服器使用,您可以使用此函式移除伺服器在作為群組一部分時使用的成員動作組態。語法
STRING group_replication_reset_member_actions()
引數
無。
傳回值
一個字串,包含操作的結果,例如是否成功。
範例
SELECT group_replication_reset_member_actions();
有關更多資訊,請參閱第 20.5.1.5 節「配置成員動作」。