以下函數可用於啟用和停用群組成員在特定情況下採取的動作,以及將組態重置為所有成員動作的預設設定。它們只能由具有 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 節,「配置成員動作」。