本節列出群組複寫外掛程式特有的系統變數。
每個群組複寫系統變數的名稱都以 group_replication_
作為前綴。
InnoDB Cluster 使用群組複寫,但群組複寫系統變數的預設值可能與本節中記載的預設值不同。例如,在 InnoDB Cluster 中,group_replication_communication_stack
的預設值為 MYSQL
,而不是預設群組複寫實作的 XCOM
。
如需詳細資訊,請參閱MySQL InnoDB Cluster。
群組複寫群組成員上的某些系統變數,包括某些群組複寫特定的系統變數和某些一般系統變數,都是群組範圍的組態設定。這些系統變數在所有群組成員上都必須具有相同的值,並且需要完整重新啟動群組 (由具有 group_replication_bootstrap_group=ON
的伺服器引導) 才能使數值變更生效。如需重新啟動每個成員都已停止的群組的指示,請參閱第 20.5.2 節「重新啟動群組」。
如果執行中的群組針對群組範圍的組態設定設定了值,並且加入的成員針對該系統變數設定了不同的值,則加入的成員必須變更值以符合該值,才能加入群組。如果群組針對其中一個系統變數設定了值,並且加入的成員不支援該系統變數,則加入的成員無法加入群組。
下列系統變數是群組範圍的組態設定
group_replication_communication_stack
(群組複寫自身檢查未強制執行的特殊情況;請參閱系統變數描述以了解詳細資訊)
群組範圍的組態設定無法在群組複寫執行時以常用方法變更,但可以使用 group_replication_switch_to_single_primary_mode()
和 group_replication_switch_to_multi_primary_mode()
函數,在群組仍在執行時變更 group_replication_single_primary_mode
和 group_replication_enforce_update_everywhere_checks
的值。如需詳細資訊,請參閱第 20.5.1.2 節「變更群組模式」。
群組複寫的大部分系統變數在不同的群組成員上可以有不同的值。對於下列系統變數,建議在群組的所有成員上設定相同的值,以避免不必要的交易回滾、訊息傳遞失敗或訊息復原失敗
group_replication_preemptive_garbage_collection
的值在所有群組成員上都必須相同。
群組複寫的大部分系統變數都描述為動態,並且可以在伺服器執行時變更其值。但是,在大多數情況下,您必須在群組成員上使用 STOP GROUP_REPLICATION
陳述式停止群組複寫,然後使用 START GROUP_REPLICATION
陳述式重新啟動,變更才會生效。變更下列系統變數時,不需要停止並重新啟動群組複寫即可生效
當您變更任何 Group Replication 系統變數的值時,請記住,如果因為 STOP GROUP_REPLICATION
陳述式或系統關機,導致在每個成員上同時停止 Group Replication,則必須像第一次啟動一樣,通過引導重新啟動群組。有關安全執行此操作的說明,請參閱第 20.5.2 節「重新啟動群組」。對於整個群組的組態設定,這是必需的,但是如果您要變更其他設定,請盡量確保至少有一個成員始終處於執行狀態。
如果將 Group Replication 的一些系統變數作為命令列引數傳遞給伺服器,則這些系統變數在伺服器啟動期間不會完全驗證。這些系統變數包括
group_replication_group_name
、group_replication_single_primary_mode
、group_replication_force_members
、SSL 變數以及流程控制系統變數。它們只有在伺服器啟動後才會完全驗證。指定群組成員的 IP 位址或主機名稱的 Group Replication 系統變數,只有在發出
START GROUP_REPLICATION
陳述式後才會驗證。Group Replication 的群組通訊系統 (GCS) 在該時點之前無法驗證這些值。
此處列出了 Group Replication 外掛程式特有的伺服器系統變數,以及其功能或目的的描述:
group_replication_advertise_recovery_endpoints
命令列格式 --group-replication-advertise-recovery-endpoints=value
系統變數 group_replication_advertise_recovery_endpoints
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 DEFAULT
此系統變數的值可以在 Group Replication 執行時變更。變更會在成員上立即生效。但是,已收到系統變數先前值的加入成員會繼續使用該值。只有在值變更後加入的成員才會收到新值。
group_replication_advertise_recovery_endpoints
指定加入成員如何建立與現有成員的連線,以進行分散式復原的狀態傳輸。此連線同時用於遠端複製操作和來自捐贈者的二進位記錄的狀態傳輸。值為
DEFAULT
(預設設定)表示加入成員使用現有成員的標準 SQL 用戶端連線,如 MySQL 伺服器的hostname
和port
系統變數所指定。如果report_port
系統變數指定了替代埠號,則會改用該埠號。效能結構描述表replication_group_members
會在MEMBER_HOST
和MEMBER_PORT
欄位中顯示此連線的位址和埠號。您可以指定一個或多個分散式復原端點,而不是
DEFAULT
,現有成員會將這些端點通告給加入的成員使用。提供分散式復原端點可讓管理員將分散式復原流量與群組成員的正規 MySQL 用戶端連線分開控制。加入的成員會依照清單上的順序,輪流嘗試每個端點。將分散式復原端點指定為逗號分隔的 IP 位址和埠號清單,例如
group_replication_advertise_recovery_endpoints= "127.0.0.1:3306,127.0.0.1:4567,[::1]:3306,localhost:3306"
IPv4 和 IPv6 位址以及主機名稱可以任意組合使用。IPv6 位址必須以方括號指定。主機名稱必須解析為本機 IP 位址。不能使用萬用字元位址格式,且不能指定空清單。請注意,標準 SQL 用戶端連線不會自動包含在分散式復原端點的清單中。如果您想要將它用作端點,則必須在清單中明確包含它。
如需有關如何選取 IP 位址和埠作為分散式復原端點,以及加入成員如何使用它們的詳細資訊,請參閱第 20.5.4.1.1 節「選取分散式復原端點的位址」。以下是需求的摘要
IP 位址不必針對 MySQL 伺服器進行配置,但它們必須指派給伺服器。
必須使用
port
、report_port
或admin_port
系統變數針對 MySQL 伺服器配置埠。如果使用
admin_port
,則復製使用者需要分散式復原的適當權限。IP 位址不需要新增到
group_replication_ip_allowlist
系統變數指定的 Group Replication 允許清單。連線的 SSL 需求由
group_replication_recovery_ssl_*
選項指定。
group_replication_allow_local_lower_version_join
命令列格式 --group-replication-allow-local-lower-version-join[={OFF|ON}]
已過時 是 系統變數 group_replication_allow_local_lower_version_join
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_allow_local_lower_version_join
允許目前的伺服器加入群組,即使其執行的 MySQL 伺服器版本低於群組的版本。使用預設設定OFF
,如果伺服器執行的版本低於現有群組成員的版本,則不允許加入複寫群組。此標準原則確保群組的所有成員都能夠交換訊息並套用交易。請注意,執行 MySQL 8.0.17 或更高版本的成員在檢查其相容性時會考慮發行版本的修補程式版本。執行 MySQL 8.0.16 或更早版本的成員只會考慮主要版本。只有在以下情況下,才將
group_replication_allow_local_lower_version_join
設定為ON
必須在緊急情況下將伺服器新增到群組,以改善群組的容錯能力,而且只有較舊的版本可用。
您想要復原一個或多個複寫群組成員的升級,而無需關閉整個群組並再次引導它。
警告將此選項設定為
ON
並不會使新成員與群組相容,並且允許它加入群組,而沒有任何防範現有成員不相容行為的保護措施。為了確保新成員的正確運作,請採取以下兩項預防措施在執行較低版本的伺服器加入群組之前,請停止該伺服器上的所有寫入。
從執行較低版本的伺服器加入群組的點開始,停止群組中其他伺服器上的所有寫入。
如果沒有這些預防措施,執行較低版本的伺服器很可能會遇到困難並終止並發生錯誤。
group_replication_auto_increment_increment
命令列格式 --group-replication-auto-increment-increment=#
系統變數 group_replication_auto_increment_increment
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 7
最小值 1
最大值 65535
此系統變數在所有群組成員上的值應相同。您無法在 Group Replication 執行時變更此系統變數的值。您必須停止 Group Replication,變更系統變數的值,然後在每個群組成員上重新啟動 Group Replication。在此過程中,系統變數的值可能會在群組成員之間有所不同,但群組成員上的一些交易可能會回復。
group_replication_auto_increment_increment
決定在此伺服器執行個體上執行的交易的自動遞增欄位之連續值之間的間隔。新增間隔可避免在群組成員上寫入時選取重複的自動遞增值,這會導致交易回復。預設值 7 代表可用值數量和允許的複寫群組最大大小(9 個成員)之間的平衡。如果您的群組成員多於或少於此數量,您可以在啟動 Group Replication 之前設定此系統變數以符合預期的群組成員數。重要當
group_replication_single_primary_mode
為ON
時,設定group_replication_auto_increment_increment
沒有作用。當在伺服器執行個體上啟動 Group Replication 時,伺服器系統變數
auto_increment_increment
的值會變更為此值,且伺服器系統變數auto_increment_offset
的值會變更為伺服器 ID。當 Group Replication 停止時,這些變更會回復。只有在auto_increment_increment
和auto_increment_offset
各自具有預設值 1 時,才會進行和回復這些變更。如果它們的值已從預設值修改,則 Group Replication 不會變更它們。當 Group Replication 處於單一主要模式(只有一個伺服器寫入)時,系統變數也不會修改。group_replication_autorejoin_tries
命令列格式 --group-replication-autorejoin-tries=#
系統變數 group_replication_autorejoin_tries
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 3
最小值 0
最大值 2016
此系統變數的值可以在 Group Replication 執行時變更,而且變更會立即生效。當發生需要此行為的問題時,會讀取系統變數的目前值。
group_replication_autorejoin_tries
指定成員在被驅逐,或在達到group_replication_unreachable_majority_timeout
設定前無法聯繫到大多數群組成員時,嘗試自動重新加入群組的次數。當成員被驅逐或達到無法聯繫到大多數成員的逾時時間時,它會嘗試重新加入(使用目前的插件選項值),然後繼續嘗試自動重新加入,直到達到指定的嘗試次數。在嘗試自動重新加入失敗後,成員會等待 5 分鐘再進行下一次嘗試。如果指定的嘗試次數用盡,成員仍未重新加入或被停止,則成員會繼續執行group_replication_exit_state_action
系統變數指定的操作。在自動重新加入嘗試期間和之間,成員會保持在超級唯讀模式,並且不接受寫入,但仍然可以在成員上進行讀取,但隨著時間的推移,讀取到過時資料的可能性會增加。如果您無法容忍任何時間段出現過時資料的可能性,請將
group_replication_autorejoin_tries
設定為 0。有關自動重新加入功能的更多資訊,以及選擇此選項的值時的注意事項,請參閱 第 20.7.7.3 節,「自動重新加入」。group_replication_bootstrap_group
命令列格式 --group-replication-bootstrap-group[={OFF|ON}]
系統變數 group_replication_bootstrap_group
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
group_replication_bootstrap_group
設定此伺服器以引導群組。這個系統變數只能在一個伺服器上設定,而且只能在第一次啟動群組或重新啟動整個群組時設定。在群組引導完成後,將此選項設定為OFF
。應該在動態和組態檔案中都設定為OFF
。在群組正在執行時,啟動兩個伺服器或重新啟動一個設定了此選項的伺服器可能會導致人為的腦裂情況,其中會引導兩個具有相同名稱的獨立群組。有關首次引導群組的說明,請參閱 第 20.2.1.5 節,「引導群組」。有關安全引導已執行和認證交易的群組的說明,請參閱 第 20.5.2 節,「重新啟動群組」。
group_replication_clone_threshold
命令列格式 --group-replication-clone-threshold=#
系統變數 group_replication_clone_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 9223372036854775807
最小值 1
最大值 9223372036854775807
單位 交易 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_clone_threshold
指定現有成員(捐贈者)和加入成員(接收者)之間交易間隔的數量(以交易次數表示),該間隔會觸發使用遠端複製操作,在分散式復原過程中將狀態傳輸到加入的成員。如果加入成員和合適的捐贈者之間的交易間隔超過閾值,群組複製會以遠端複製操作開始分散式復原。如果交易間隔低於閾值,或遠端複製操作在技術上不可行,群組複製會直接從捐贈者的二進位記錄檔進行狀態傳輸。警告請勿在作用中的群組中將
group_replication_clone_threshold
設定為較低的值。如果在遠端複製操作進行時,群組中發生超過閾值的交易次數,則加入的成員在重新啟動後會再次觸發遠端複製操作,並且可能會無限期地繼續這樣做。為了避免這種情況,請確保將閾值設定為高於您預期在遠端複製操作所需的時間內,群組中會發生的交易次數。若要使用此功能,捐贈者和加入的成員都必須事先設定為支援複製。有關說明,請參閱 第 20.5.4.2 節,「分散式復原的複製」。當執行遠端複製操作時,群組複製會為您管理它,包括所需的伺服器重新啟動,前提是已設定
group_replication_start_on_boot=ON
。如果沒有,您必須手動重新啟動伺服器。遠端複製操作會取代加入成員上現有的資料字典,但如果加入成員有其他交易,這些交易在其他群組成員上不存在,群組複製會進行檢查,並且不會繼續進行,因為這些交易將會被複製操作抹除。預設設定(即 GTID 中交易允許的最大序號)表示幾乎總是嘗試從捐贈者的二進位記錄檔進行狀態傳輸,而不是複製。但是,請注意,如果無法從捐贈者的二進位記錄檔進行狀態傳輸,例如加入成員所需的交易在任何現有群組成員的二進位記錄檔中都不可用,則無論您的閾值為何,群組複製總是會嘗試執行複製操作。如果您不想在複寫群組中使用任何複製,請不要在成員上安裝複製插件。
group_replication_communication_debug_options
命令列格式 --group-replication-communication-debug-options=值
系統變數 group_replication_communication_debug_options
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 GCS_DEBUG_NONE
有效值 GCS_DEBUG_NONE
GCS_DEBUG_BASIC
GCS_DEBUG_TRACE
XCOM_DEBUG_BASIC
XCOM_DEBUG_TRACE
GCS_DEBUG_ALL
此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_communication_debug_options
設定為不同的群組複製元件提供偵錯訊息的等級,例如群組通訊系統 (GCS) 和群組通訊引擎 (XCom,一種 Paxos 變體)。偵錯資訊會儲存在資料目錄中的GCS_DEBUG_TRACE
檔案中。可以合併指定為字串的可用選項集。下列選項可用
GCS_DEBUG_NONE
停用 GCS 和 XCom 的所有偵錯等級。GCS_DEBUG_BASIC
在 GCS 中啟用基本偵錯資訊。GCS_DEBUG_TRACE
在 GCS 中啟用追蹤資訊。XCOM_DEBUG_BASIC
在 XCom 中啟用基本偵錯資訊。XCOM_DEBUG_TRACE
在 XCom 中啟用追蹤資訊。GCS_DEBUG_ALL
啟用 GCS 和 XCom 的所有偵錯等級。
將偵錯等級設定為
GCS_DEBUG_NONE
只有在不提供任何其他選項的情況下才有效。將偵錯等級設定為GCS_DEBUG_ALL
會覆寫所有其他選項。group_replication_communication_max_message_size
命令列格式 --group-replication-communication-max-message-size=#
系統變數 group_replication_communication_max_message_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10485760
最小值 0
最大值 1073741824
單位 位元組 此系統變數在所有群組成員上的值應相同。您無法在 Group Replication 執行時變更此系統變數的值。您必須停止 Group Replication,變更系統變數的值,然後在每個群組成員上重新啟動 Group Replication。在此過程中,系統變數的值可能會在群組成員之間有所不同,但群組成員上的一些交易可能會回復。
group_replication_communication_max_message_size
指定群組複製通訊的最大訊息大小。大於此大小的訊息會自動分割為單獨傳送的片段,並由接收者重新組裝。如需更多資訊,請參閱 第 20.7.5 節,「訊息分割」。預設會設定 10485760 位元組 (10 MiB) 的最大訊息大小,這表示預設會使用分割。允許的最大值與
replica_max_allowed_packet
系統變數的最大值相同,即 1073741824 位元組 (1 GB)。group_replication_communication_max_message_size
的設定必須小於replica_max_allowed_packet
的設定,因為套用執行緒無法處理大於允許的最大封包大小的訊息片段。若要關閉分割,請為group_replication_communication_max_message_size
指定零值。為了使複寫群組的成員能夠使用分割,群組的通訊協定版本必須為 MySQL 8.0.16 或更高版本。使用
group_replication_get_communication_protocol()
函式來檢視群組的通訊協定版本。如果正在使用較低的版本,則群組成員不會分割訊息。如果所有群組成員都支援,您可以使用group_replication_set_communication_protocol()
函式將群組的通訊協定設定為更高的版本。如需更多資訊,請參閱 第 20.5.1.4 節,「設定群組的通訊協定版本」。group_replication_communication_stack
系統變數 group_replication_communication_stack
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 XCOM
有效值 XCOM
MYSQL
注意此系統變數實際上是群組範圍的組態設定;雖然可以在執行階段設定,但任何變更都需要重新啟動整個複寫群組才能生效。
group_replication_communication_stack
指定是要使用 XCom 通訊堆疊還是 MySQL 通訊堆疊來建立成員之間的群組通訊連線。XCom 通訊堆疊是群組複製自己的實作,不支援驗證或網路命名空間。MySQL 通訊堆疊是 MySQL Server 的原生實作,支援驗證和網路命名空間,並在發佈時立即存取新的安全性功能。群組的所有成員都必須使用相同的通訊堆疊。當您使用 MySQL 通訊堆疊來取代 XCom 時,MySQL Server 會使用其自己的驗證和加密協定在群組成員之間建立每個連線。
注意如果您正在使用 InnoDB Cluster,則
group_replication_communication_stack
的預設值為MYSQL
。如需詳細資訊,請參閱MySQL InnoDB Cluster。
當您設定群組以使用 MySQL 的通訊堆疊時,需要額外的組態設定;請參閱第 20.6.1 節「用於連線安全管理的通訊堆疊」。
group_replication_communication_stack
實際上是一個群組範圍的組態設定,而且所有群組成員上的設定都必須相同。不過,此設定並不受群組複製本身的群組範圍組態設定檢查所約束。擁有與群組其他成員不同值的成員根本無法與其他成員通訊,因為通訊協定不相容,因此無法交換有關其組態設定的資訊。這表示雖然系統變數的值可以在群組複製執行時變更,並在您重新啟動群組成員上的群組複製後生效,但除非所有成員上的設定都已變更,否則該成員仍然無法重新加入群組。因此,您必須先停止所有成員上的群組複製,並變更所有成員上的系統變數值,然後才能重新啟動群組。由於所有成員都已停止,因此需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需從一個通訊堆疊移轉到另一個通訊堆疊的指示,請參閱第 20.6.1 節「用於連線安全管理的通訊堆疊」。group_replication_components_stop_timeout
命令列格式 --group-replication-components-stop-timeout=#
系統變數 group_replication_components_stop_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 300
最小值 2
最大值 31536000
單位 秒 此系統變數的值可以在群組複製執行時變更,但變更只會在您停止並重新啟動群組成員上的群組複製後生效。
group_replication_components_stop_timeout
指定群組複製在關閉時等待其每個模組完成進行中處理程序的時間(以秒為單位)。在發出STOP GROUP_REPLICATION
陳述式後,即套用元件逾時,此陳述式會在伺服器重新啟動或自動重新加入期間自動發生。逾時用於解決群組複製元件無法正常停止的情況,如果成員在處於錯誤狀態時或當 MySQL Enterprise Backup 等程序正在持有成員上資料表的全域鎖定時,可能會發生這種情況。在這種情況下,成員無法停止應用程式執行緒或完成分散式復原程序以重新加入。在問題解決(例如,鎖定被釋放)或元件逾時過期且模組不論其狀態為何都已關閉之前,
STOP GROUP_REPLICATION
不會完成。預設值為 300 秒,因此如果問題未在此時間之前解決,則會在 5 分鐘後停止群組複製元件,允許重新啟動並重新加入成員。
group_replication_compression_threshold
命令列格式 --group-replication-compression-threshold=#
系統變數 group_replication_compression_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000000
最小值 0
最大值 4294967295
單位 位元組 壓縮應用於群組成員之間傳送的訊息之上的位元組臨界值。如果此系統變數設定為零,則會停用壓縮。
group_replication_compression_threshold
的值在所有群組成員上都應該相同。群組複製使用 LZ4 壓縮演算法來壓縮群組中傳送的訊息。請注意,LZ4 壓縮演算法支援的最大輸入大小為 2113929216 個位元組。此限制低於
group_replication_compression_threshold
系統變數的最大可能值,此變數會與 XCom 接受的最大訊息大小相符。使用 LZ4 壓縮演算法時,不要為group_replication_compression_threshold
設定大於 2113929216 個位元組的值,因為啟用訊息壓縮時,無法提交大於此大小的交易。如需更多資訊,請參閱第 20.7.4 節「訊息壓縮」。
-
命令列格式 --group-replication-consistency=value
系統變數 group_replication_consistency
範圍 全域、階段作業 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 BEFORE_ON_PRIMARY_FAILOVER
有效值 EVENTUAL
BEFORE_ON_PRIMARY_FAILOVER
BEFORE
AFTER
BEFORE_AND_AFTER
此系統變數的值可以在群組複製執行時變更。
group_replication_consistency
是伺服器系統變數,而非群組複製外掛程式專用的變數,因此不需要重新啟動群組複製即可使變更生效。變更系統變數的階段作業值會立即生效,而變更全域值會對變更後啟動的新階段作業生效。變更此系統變數的全域設定需要GROUP_REPLICATION_ADMIN
權限。group_replication_consistency
控制群組提供的交易一致性保證。您可以全域或依交易設定一致性。group_replication_consistency
也會設定單一主要群組中新選出主要伺服器所使用的隔離機制。必須針對唯讀 (RO) 和讀寫 (RW) 交易考量變數的效果。以下清單顯示此變數的可能值,依交易一致性保證遞增的順序排列EVENTUAL
RO 和 RW 交易都不會等待先前交易完成才執行。這是新增此變數之前群組複製的行為。RW 交易不會等待其他成員套用交易。這表示交易可以在一個成員上外部化,然後才在其他成員上外部化。這也表示,如果主要伺服器容錯移轉,新的主要伺服器可以接受新的 RO 和 RW 交易,然後才套用先前的主要伺服器交易。RO 交易可能會導致過時的值,RW 交易可能會因衝突而導致回溯。
BEFORE_ON_PRIMARY_FAILOVER
新選出主要伺服器正在套用舊主要伺服器之待辦事項的新 RO 或 RW 交易會被暫停 (不套用),直到已套用任何待辦事項。這可確保在主要伺服器容錯移轉時(無論是有意還是無意),用戶端始終會在主要伺服器上看到最新值。這可保證一致性,但也表示用戶端必須能夠處理套用待辦事項時的延遲。通常此延遲應最小,但確實取決於待辦事項的大小。
BEFORE
RW 交易會等待所有先前的交易完成後才套用。RO 交易會等待所有先前的交易完成後才執行。這可確保此交易透過僅影響交易的延遲來讀取最新值。這可透過確保同步處理僅用於 RO 交易來減少每次 RW 交易的同步處理額外負荷。此一致性層級也包括
BEFORE_ON_PRIMARY_FAILOVER
所提供的一致性保證。AFTER
RW 交易會等待其變更已套用於所有其他成員。此值對 RO 交易沒有影響。此模式可確保在本機成員上提交交易時,任何後續交易都會讀取任何群組成員上所寫的值或更新的值。在主要用於 RO 操作的群組中使用此模式,以確保套用的 RW 交易會在提交後套用於所有地方。您的應用程式可以使用此模式來確保後續讀取擷取包含最新寫入的最新資料。這可透過確保同步處理僅用於 RW 交易來減少每次 RO 交易的同步處理額外負荷。此一致性層級也包括
BEFORE_ON_PRIMARY_FAILOVER
所提供的一致性保證。BEFORE_AND_AFTER
RW 交易會等待所有先前的交易完成後才套用,以及等待其變更已套用於其他成員。RO 交易會等待所有先前的交易完成後才執行。此一致性層級也包括
BEFORE_ON_PRIMARY_FAILOVER
所提供的一致性保證。
如需更多資訊,請參閱第 20.5.3 節「交易一致性保證」。
group_replication_enforce_update_everywhere_checks
命令列格式 --group-replication-enforce-update-everywhere-checks[={OFF|ON}]
系統變數 group_replication_enforce_update_everywhere_checks
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
注意此系統變數是群組範圍的組態設定,而且需要完整重新啟動複寫群組才能使變更生效。
group_replication_enforce_update_everywhere_checks
啟用或停用多主要更新至各處的嚴格一致性檢查。預設值是停用檢查。在單一主要模式中,必須在所有群組成員上停用此選項。在多主要模式中,當啟用此選項時,會檢查陳述式,如下所示以確保它們與多主要模式相容如果交易在
SERIALIZABLE
隔離層級下執行,則在與群組同步處理時,其提交會失敗。如果交易針對具有連鎖條件約束的外鍵的資料表執行,則在與群組同步處理時,該交易會無法提交。
此系統變數是群組範圍的組態設定。它在所有群組成員上都必須具有相同的值,而且在群組複製執行時無法變更,並且需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需安全引導已執行並認證交易之群組的指示,請參閱第 20.5.2 節「重新啟動群組」。如果群組已為此系統變數設定值,且加入成員已為此系統變數設定不同的值,則在變更值以符合之前,加入成員無法加入群組。如果群組成員已為此系統變數設定值,且加入成員不支援此系統變數,則無法加入群組。
使用
group_replication_switch_to_single_primary_mode()
和group_replication_switch_to_multi_primary_mode()
函式,可以在群組仍在執行時變更此系統變數的值。更多資訊請參閱章節 20.5.1.2,「變更群組模式」。group_replication_exit_state_action
命令列格式 --group-replication-exit-state-action=value
系統變數 group_replication_exit_state_action
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 OFFLINE_MODE
有效值 ABORT_SERVER
OFFLINE_MODE
READ_ONLY
此系統變數的值可以在 Group Replication 執行時變更,而且變更會立即生效。當發生需要此行為的問題時,會讀取系統變數的目前值。
group_replication_exit_state_action
設定當此伺服器實例非預期地離開群組時(例如在遇到套用程式錯誤、多數成員遺失,或群組中其他成員因懷疑逾時而將其驅逐時)群組複寫的行為。在多數成員遺失的情況下,成員離開群組的逾時期間由group_replication_unreachable_majority_timeout
系統變數設定,而懷疑的逾時期間則由group_replication_member_expel_timeout
系統變數設定。請注意,被驅逐的群組成員在重新連線到群組之前不會知道自己被驅逐,因此只有在成員設法重新連線,或成員對自己提出懷疑並將自己驅逐時,才會採取指定的動作。當群組成員因懷疑逾時或多數成員遺失而被驅逐時,如果成員將
group_replication_autorejoin_tries
系統變數設定為指定自動重新加入嘗試的次數,它會先在超級唯讀模式下進行指定次數的嘗試,然後再依照group_replication_exit_state_action
指定的動作執行。如果發生套用程式錯誤,則不會進行自動重新加入嘗試,因為這些錯誤是無法復原的。當
group_replication_exit_state_action
設定為READ_ONLY
時,如果成員非預期地離開群組或用盡其自動重新加入嘗試,則實例會將 MySQL 切換為超級唯讀模式(透過將系統變數super_read_only
設定為ON
)。當
group_replication_exit_state_action
設定為OFFLINE_MODE
時,如果成員非預期地離開群組或用盡其自動重新加入嘗試,則實例會將 MySQL 切換為離線模式(透過將系統變數offline_mode
設定為ON
)。在此模式下,連線的用戶端使用者會在下一個請求時斷線,並且不再接受連線,但具有CONNECTION_ADMIN
權限(或已棄用的SUPER
權限)的用戶端使用者除外。群組複寫也會將系統變數super_read_only
設定為ON
,因此用戶端無法進行任何更新,即使他們是以具有CONNECTION_ADMIN
或SUPER
權限連線也一樣。當
group_replication_exit_state_action
設定為ABORT_SERVER
時,如果成員非預期地離開群組或用盡其自動重新加入嘗試,則實例會關閉 MySQL。重要如果成員在成功加入群組之前發生失敗,則不會採取指定的結束動作。如果在本機組態檢查期間發生失敗,或加入成員的組態與群組的組態不符,就會發生這種情況。在這些情況下,
super_read_only
系統變數會保留其原始值,連線會繼續被接受,並且伺服器不會關閉 MySQL。為了確保伺服器在群組複寫未啟動時無法接受更新,因此我們建議在伺服器的組態檔中,於啟動時設定super_read_only=ON
,在成功啟動後,群組複寫會將主要成員的此值變更為OFF
。當伺服器設定為在伺服器開機時啟動群組複寫時 (group_replication_start_on_boot=ON
),此保護措施尤其重要,但當使用START GROUP_REPLICATION
命令手動啟動群組複寫時,此措施也很有用。如需更多關於使用此選項的資訊,以及採取結束動作的所有情況的完整清單,請參閱章節 20.7.7.4,「結束動作」。
group_replication_flow_control_applier_threshold
命令列格式 --group-replication-flow-control-applier-threshold=#
系統變數 group_replication_flow_control_applier_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 25000
最小值 0
最大值 2147483647
單位 交易 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_applier_threshold
指定套用程式佇列中觸發流量控制的等待交易數量。group_replication_flow_control_certifier_threshold
命令列格式 --group-replication-flow-control-certifier-threshold=#
系統變數 group_replication_flow_control_certifier_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 25000
最小值 0
最大值 2147483647
單位 交易 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_certifier_threshold
指定驗證程式佇列中觸發流量控制的等待交易數量。group_replication_flow_control_hold_percent
命令列格式 --group-replication-flow-control-hold-percent=#
系統變數 group_replication_flow_control_hold_percent
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 0
最大值 100
單位 百分比 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_hold_percent
定義群組配額中保留未使用部分的百分比,以允許正在進行流量控制的叢集趕上落後的進度。值為 0 表示配額中沒有任何部分保留用於趕上工作進度。group_replication_flow_control_max_quota
命令列格式 --group-replication-flow-control-max-quota=#
系統變數 group_replication_flow_control_max_quota
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 2147483647
此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_max_quota
定義群組的最大流量控制配額,或啟用流量控制時,任何期間的最大可用配額。值為 0 表示未設定最大配額。此系統變數的值不能小於group_replication_flow_control_min_quota
和group_replication_flow_control_min_recovery_quota
。group_replication_flow_control_member_quota_percent
命令列格式 --group-replication-flow-control-member-quota-percent=#
系統變數 group_replication_flow_control_member_quota_percent
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 100
單位 百分比 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_member_quota_percent
定義在計算配額時,成員應假設其本身可用的配額百分比。值為 0 表示配額應在上一期間為寫入者的成員之間平均分配。group_replication_flow_control_min_quota
命令列格式 --group-replication-flow-control-min-quota=#
系統變數 group_replication_flow_control_min_quota
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 2147483647
此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_min_quota
控制可分配給成員的最低流量控制配額,與上一期間執行的計算最低配額無關。值為 0 表示沒有最低配額。此系統變數的值不能大於group_replication_flow_control_max_quota
。group_replication_flow_control_min_recovery_quota
命令列格式 --group-replication-flow-control-min-recovery-quota=#
系統變數 group_replication_flow_control_min_recovery_quota
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 2147483647
此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_min_recovery_quota
控制因群組中另一個復原成員而可分配給成員的最低配額,與上一期間執行的計算最低配額無關。值為 0 表示沒有最低配額。此系統變數的值不能大於group_replication_flow_control_max_quota
。group_replication_flow_control_mode
命令列格式 --group-replication-flow-control-mode=value
系統變數 group_replication_flow_control_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 QUOTA
有效值 DISABLED
QUOTA
此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_mode
指定用於流量控制的模式。group_replication_flow_control_period
命令列格式 --group-replication-flow-control-period=#
系統變數 group_replication_flow_control_period
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1
最小值 1
最大值 60
單位 秒 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_period
定義流量控制迭代之間等待的秒數,在此迭代中,會傳送流量控制訊息並執行流量控制管理工作。group_replication_flow_control_release_percent
命令列格式 --group-replication-flow-control-release-percent=#
系統變數 group_replication_flow_control_release_percent
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 50
最小值 0
最大值 1000
單位 百分比 此系統變數的值可以在群組複製執行時變更,並且變更會立即生效。
group_replication_flow_control_release_percent
定義了當流量控制不再需要節流寫入成員時,應如何釋放群組配額,此百分比為每個流量控制週期的配額增加量。值為 0 表示一旦流量控制閾值在限制範圍內,配額將在單一流量控制迭代中釋放。該範圍允許配額釋放至目前配額的 10 倍,因為這樣可以提供更大的適應性,尤其是在流量控制週期較長且配額非常小時。group_replication_force_members
命令列格式 --group-replication-force-members=value
系統變數 group_replication_force_members
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數用於強制建立新的群組成員關係。此系統變數的值可以在群組複寫執行時變更,且變更會立即生效。您只需要在要保留在群組中的其中一個群組成員上設定此系統變數的值。有關您可能需要強制建立新群組成員關係的情況,以及使用此系統變數時應遵循的程序,請參閱第 20.7.8 節,「處理網路分割和仲裁遺失」。
group_replication_force_members
指定以逗號分隔的對等位址清單,例如host1:port1
、host2:port2
。未包含在清單中的任何現有成員都不會收到群組的新檢視,並且會被封鎖。對於每個要繼續作為成員的現有成員,您必須包含 IP 位址或主機名稱和埠,如同每個成員的group_replication_local_address
系統變數中所給定的一樣。IPv6 位址必須以方括號指定。例如"198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061,example.org:33061"
群組複寫的群組通訊引擎 (XCom) 會檢查提供的 IP 位址是否為有效格式,並檢查您是否未包含任何目前無法連線的群組成員。否則,新組態將不會被驗證,因此您必須小心僅包含可連線的線上伺服器,這些伺服器是群組的成員。清單中任何不正確的值或無效的主機名稱都可能導致群組因組態無效而被封鎖。
在強制建立新的成員關係組態之前,務必先確保要排除的伺服器已關閉。如果它們尚未關閉,請在繼續操作之前將它們關閉。仍在線上的群組成員可以自動形成新的組態,如果已經發生這種情況,強制建立進一步的新組態可能會為群組建立人為的腦裂情況。
在使用
group_replication_force_members
系統變數成功強制建立新的群組成員關係並解除封鎖群組後,請務必清除該系統變數。group_replication_force_members
必須為空才能發出START GROUP_REPLICATION
陳述式。-
命令列格式 --group-replication-group-name=value
系統變數 group_replication_group_name
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 當群組複寫正在執行時,此系統變數的值無法變更。
group_replication_group_name
指定此伺服器執行個體所屬的群組名稱,該名稱必須是有效的 UUID。當群組成員從用戶端收到的交易,以及群組成員在內部產生的檢視變更事件寫入二進位日誌時,此 UUID 會構成 GTID 的一部分。重要必須使用唯一的 UUID。
-
命令列格式 --group-replication-group-seeds=value
系統變數 group_replication_group_seeds
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_group_seeds
是群組成員的清單,加入的成員可以連線到這些成員,以取得所有目前群組成員的詳細資訊。加入的成員會使用這些詳細資訊來選取並連線到群組成員,以取得與群組同步所需的資料。此清單包含每個包含的種子成員的單一內部網路位址或主機名稱,如同種子成員的group_replication_local_address
系統變數中所設定的一樣(而不是種子成員的 SQL 用戶端連線,如同 MySQL Server 的hostname
和port
系統變數所指定的一樣)。種子成員的位址指定為以逗號分隔的清單,例如host1:port1
、host2:port2
。IPv6 位址必須以方括號指定。例如group_replication_group_seeds= "198.51.100.44:33061,[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061, example.org:33061"
請注意,直到發出
START GROUP_REPLICATION
陳述式且群組通訊系統 (GCS) 可用時,才會驗證您為此變數指定的值。通常,此清單包含群組的所有成員,但您可以選擇群組成員的子集作為種子。此清單必須包含至少一個有效的成員位址。啟動群組複寫時,會驗證每個位址。如果清單未包含任何有效的成員位址,則發出
START GROUP_REPLICATION
將會失敗。當伺服器正在加入複寫群組時,它會嘗試連線至其
group_replication_group_seeds
系統變數中列出的第一個種子成員。如果連線被拒絕,加入的成員會依序嘗試連線至清單中的其他每個種子成員。如果加入的成員連線至種子成員,但因此未被新增至複寫群組(例如,因為種子成員的允許清單中沒有加入成員的位址,並且關閉連線),則加入的成員會繼續依序嘗試清單中的其餘種子成員。加入的成員必須使用與種子成員在
group_replication_group_seeds
選項中宣傳的相同協定(IPv4 或 IPv6)與種子成員通訊。為了群組複寫的 IP 位址權限,種子成員的允許清單必須包含加入成員的 IP 位址,以便用於種子成員提供的協定,或者包含可解析為該協定位址的主機名稱。除了加入成員的group_replication_local_address
之外,如果該位址的協定與種子成員宣傳的協定不符,則必須設定並允許此位址或主機名稱。如果加入的成員沒有適當協定的許可位址,則其連線嘗試會被拒絕。有關更多資訊,請參閱第 20.6.4 節,「群組複寫 IP 位址權限」。 group_replication_gtid_assignment_block_size
命令列格式 --group-replication-gtid-assignment-block-size=#
系統變數 group_replication_gtid_assignment_block_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1000000
最小值 1
最大值(64 位元平台) 9223372036854775807
最大值(32 位元平台) 4294967295
注意此系統變數是群組範圍的組態設定,而且需要完整重新啟動複寫群組才能使變更生效。
group_replication_gtid_assignment_block_size
指定為每個群組成員保留的連續 GTID 數量。每個成員會使用自己的區塊,並在需要時保留更多區塊。此系統變數是群組範圍的組態設定。它在所有群組成員上都必須具有相同的值,而且在群組複製執行時無法變更,並且需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需安全引導已執行並認證交易之群組的指示,請參閱第 20.5.2 節「重新啟動群組」。如果群組已為此系統變數設定值,且加入成員已為此系統變數設定不同的值,則在變更值以符合之前,加入成員無法加入群組。如果群組成員已為此系統變數設定值,且加入成員不支援此系統變數,則無法加入群組。
group_replication_ip_allowlist
命令列格式 --group-replication-ip-allowlist=value
系統變數 group_replication_ip_allowlist
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 AUTOMATIC
group_replication_ip_allowlist
指定允許哪些主機連線至群組。當 XCom 通訊堆疊用於群組時(group_replication_communication_stack=XCOM
),允許清單會用於控制對群組的存取。當 MySQL 通訊堆疊用於群組時(group_replication_communication_stack=MYSQL
),使用者驗證會用於控制對群組的存取,且允許清單不會被使用,如果設定則會被忽略。您在
group_replication_local_address
中為每個群組成員指定的位址,必須在複寫群組中的其他伺服器上被允許。請注意,直到發出START GROUP_REPLICATION
陳述式且群組通訊系統 (GCS) 可用時,才會驗證您為此變數指定的值。預設情況下,此系統變數設定為
AUTOMATIC
,允許來自主機上啟用的私有子網路的連線。群組複寫的群組通訊引擎 (XCom) 會自動掃描主機上啟用的介面,並識別出那些在私有子網路上具有位址的介面。這些位址以及 IPv4 和 IPv6 的localhost
IP 位址會被用來建立群組複寫的允許清單。如需自動允許位址的範圍列表,請參閱第 20.6.4 節,「群組複寫 IP 位址權限」。私有位址的自動允許清單不能用於來自私有網路外部伺服器的連線。對於不同機器上的伺服器實例之間的群組複寫連線,您必須提供公用 IP 位址,並將這些指定為明確的允許清單。如果您為允許清單指定任何項目,則不會自動新增私有位址,因此如果您使用其中任何一個,您必須明確指定它們。
localhost
IP 位址會自動新增。作為
group_replication_ip_allowlist
選項的值,您可以指定以下任何組合:IPv4 位址 (例如,
198.51.100.44
)具有 CIDR 標記法的 IPv4 位址 (例如,
192.0.2.21/24
)IPv6 位址 (例如,
2001:db8:85a3:8d3:1319:8a2e:370:7348
)具有 CIDR 標記法的 IPv6 位址 (例如,
2001:db8:85a3:8d3::/64
)主機名稱 (例如,
example.org
)具有 CIDR 標記法的主機名稱 (例如,
www.example.com/24
)
主機名稱可以解析為 IPv4 位址、IPv6 位址或兩者皆可。如果主機名稱解析為 IPv4 和 IPv6 位址,則群組複寫連線一律會使用 IPv4 位址。您可以在主機名稱或 IP 位址中結合使用 CIDR 標記法,以允許具有特定網路前綴的 IP 位址區塊,但請確保指定子網路中的所有 IP 位址都在您的控制之下。
逗號必須分隔允許清單中的每個項目。例如:
"192.0.2.21/24,198.51.100.44,203.0.113.0/24,2001:db8:85a3:8d3:1319:8a2e:370:7348,example.org,www.example.com/24"
如果群組的任何種子成員在
group_replication_group_seeds
選項中以 IPv6 位址列出,而加入的成員具有 IPv4group_replication_local_address
,反之亦然,您還必須為加入的成員設定並允許種子成員提供的協定的替代位址 (或解析為該協定位址的主機名稱)。如需更多資訊,請參閱第 20.6.4 節,「群組複寫 IP 位址權限」。可以根據您的安全性需求,在不同的群組成員上設定不同的允許清單,例如,為了將不同的子網路分開。但是,當重新配置群組時,這可能會導致問題。如果您沒有特定的安全性要求,否則請在群組的所有成員上使用相同的允許清單。如需更多詳細資訊,請參閱第 20.6.4 節,「群組複寫 IP 位址權限」。
對於主機名稱,名稱解析僅在另一個伺服器發出連線請求時才會發生。無法解析的主機名稱不會被視為允許清單驗證,並且錯誤日誌會寫入警告訊息。對已解析的主機名稱執行正向確認反向 DNS (FCrDNS) 驗證。
警告在允許清單中,主機名稱的安全性本質上低於 IP 位址。 FCrDNS 驗證提供良好的保護程度,但可能會受到某些類型的攻擊影響。僅在絕對必要時才在允許清單中指定主機名稱,並確保用於名稱解析的所有元件 (例如 DNS 伺服器) 都保持在您的控制之下。您也可以使用 hosts 檔案在本機實作名稱解析,以避免使用外部元件。
group_replication_local_address
命令列格式 --group-replication-local-address=值
系統變數 group_replication_local_address
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_local_address
設定成員提供給其他成員連線的網路位址,指定為host:port
格式的字串。此位址必須可由群組的所有成員存取,因為群組複寫的群組通訊引擎 (XCom,Paxos 的變體) 會使用它在遠端 XCom 實例之間進行 TCP 通訊。如果您使用 MySQL 通訊堆疊來建立成員之間的群組通訊連線 (group_replication_communication_stack
= MYSQL),則該位址必須是 MySQL 伺服器正在監聽的 IP 位址和埠之一,如伺服器的bind_address
系統變數所指定。警告請勿使用此位址來查詢或管理成員上的資料庫。這不是 SQL 用戶端連線主機和埠。
您在
group_replication_local_address
中指定的位址或主機名稱會由群組複寫用作複寫群組內群組成員的唯一識別碼。只要主機名稱或 IP 位址都不同,您就可以為複寫群組的所有成員使用相同的埠,只要埠都不同,您就可以為所有成員使用相同的主機名稱或 IP 位址。group_replication_local_address
的建議埠為 33061。請注意,您為此變數指定的值只有在發出START GROUP_REPLICATION
陳述式且群組通訊系統 (GCS) 可用時才會驗證。group_replication_local_address
設定的網路位址必須可由所有群組成員解析。例如,如果每個伺服器實例都在具有固定網路位址的不同機器上,您可以使用機器的 IP 位址,例如 10.0.0.1。如果您使用主機名稱,則必須使用完整名稱,並確保可透過 DNS、正確設定的/etc/hosts
檔案或其他名稱解析程序進行解析。必須以方括號指定 IPv6 位址,才能區分埠號,例如:group_replication_local_address= "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:33061"
如果指定為伺服器實例群組複寫本機位址的主機名稱解析為 IPv4 和 IPv6 位址,則群組複寫連線一律會使用 IPv4 位址。如需有關群組複寫對 IPv6 網路的支援,以及在混用使用 IPv4 和使用 IPv6 的成員的複寫群組的更多資訊,請參閱第 20.5.5 節,「支援 IPv6 和混合 IPv6 及 IPv4 群組」。
如果您使用 XCom 通訊堆疊來建立成員之間的群組通訊連線 (
group_replication_communication_stack = XCOM
),則必須將您在group_replication_local_address
中為每個群組成員指定的位址新增到複寫群組中其他伺服器的group_replication_ip_allowlist
系統變數清單中。當群組使用 XCom 通訊堆疊時,允許清單會被用來控制對群組的存取。當群組使用 MySQL 通訊堆疊時,會使用使用者驗證來控制對群組的存取,且如果設定了允許清單則不會使用,並會被忽略。請注意,如果群組的任何種子成員在group_replication_group_seeds
選項中以 IPv6 位址列出,而此成員具有 IPv4group_replication_local_address
,反之亦然,您還必須為此成員設定並允許必要協定的替代位址 (或解析為該協定位址的主機名稱)。如需更多資訊,請參閱第 20.6.4 節,「群組複寫 IP 位址權限」。group_replication_member_expel_timeout
命令列格式 --group-replication-member-expel-timeout=#
系統變數 group_replication_member_expel_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 5
最小值 0
最大值 3600
單位 秒 此系統變數的值可以在群組複寫執行時變更,並且變更會立即生效。每當群組複寫檢查逾時時,都會讀取系統變數的目前值。群組的所有成員不一定必須具有相同的設定,但建議如此以避免意外驅逐。
group_replication_member_expel_timeout
指定群組複寫群組成員在建立懷疑後,等待驅逐被懷疑失敗的成員的時間 (以秒為單位)。在建立懷疑之前最初的 5 秒偵測期間不計入此時間。group_replication_member_expel_timeout
的值預設為 5,表示懷疑的成員在 5 秒偵測期間過後 5 秒可能被驅逐。變更群組成員上
group_replication_member_expel_timeout
的值會立即對該群組成員上現有和未來的懷疑生效。因此,您可以將此方法用來強制懷疑逾時並驅逐懷疑的成員,允許變更群組配置。如需更多資訊,請參閱第 20.7.7.1 節,「驅逐逾時」。增加
group_replication_member_expel_timeout
的值,有助於避免在較慢或較不穩定的網路,或是預期會有暫時性網路中斷或機器速度變慢的情況下,發生不必要的驅逐。如果可疑成員在被懷疑逾時前恢復活動,它會套用其餘群組成員緩衝的所有訊息,並進入ONLINE
狀態,而無需操作員介入。您可以指定最長 3600 秒(1 小時)的逾時值。務必確保 XCom 的訊息快取空間足夠大,足以容納您指定時間內預期的訊息量,再加上最初的 5 秒偵測期間,否則成員將無法重新連線。您可以使用group_replication_message_cache_size
系統變數調整快取大小限制。如需更多資訊,請參閱第 20.7.6 節「XCom 快取管理」。如果超過逾時時間,則可疑成員在被懷疑逾時後會立即遭到驅逐。如果該成員能夠恢復通訊並收到它被驅逐的檢視,且該成員的
group_replication_autorejoin_tries
系統變數設定為指定自動重新加入嘗試次數,則它會繼續嘗試指定的次數以重新加入群組,同時處於超級唯讀模式。如果成員未指定任何自動重新加入嘗試次數,或已用盡指定的嘗試次數,則它會遵循系統變數group_replication_exit_state_action
所指定的動作。如需更多關於使用
group_replication_member_expel_timeout
設定的資訊,請參閱第 20.7.7.1 節「驅逐逾時」。如需替代的緩解策略,以避免在無法使用此系統變數時發生不必要的驅逐,請參閱第 20.3.2 節「群組複寫限制」。group_replication_member_weight
命令列格式 --group-replication-member-weight=#
系統變數 group_replication_member_weight
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 50
最小值 0
最大值 100
單位 百分比 此系統變數的值可以在群組複寫執行時變更,且變更會立即生效。當發生容錯移轉情況時,會讀取系統變數的目前值。
group_replication_member_weight
指定可以指派給成員的百分比權重,以影響在發生容錯移轉時成員被選為主要成員的機率,例如當現有的主要成員離開單一主要群組時。將數值權重指派給成員,以確保選出特定成員,例如在排定的主要成員維護期間,或確保在發生容錯移轉時優先使用特定硬體。對於組態如下的成員群組
member-1
:group_replication_member_weight=30,server_uuid=aaaamember-2
:group_replication_member_weight=40,server_uuid=bbbbmember-3
:group_replication_member_weight=40,server_uuid=ccccmember-4
:group_replication_member_weight=40,server_uuid=dddd
在選出新的主要成員期間,上述成員將會排序為
member-2
、member-3
、member-4
和member-1
。這會導致在發生容錯移轉時,選擇member
-2 作為新的主要成員。如需更多資訊,請參閱第 20.1.3.1 節「單一主要模式」。group_replication_message_cache_size
命令列格式 --group-replication-message-cache-size=#
系統變數 group_replication_message_cache_size
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 1073741824 (1 GB)
最小值 134217728 (128 MB)
最大值(64 位元平台) 18446744073709551615 (16 EiB)
最大值(32 位元平台) 315360004294967295 (4 GB)
單位 位元組 此系統變數在所有群組成員上應具有相同的值。此系統變數的值可以在群組複寫執行時變更。在您停止並重新啟動成員上的群組複寫後,變更會在每個群組成員上生效。在此過程中,允許系統變數的值在群組成員之間有所不同,但成員在發生連線中斷時可能無法重新連線。
group_replication_message_cache_size
設定群組複寫 (XCom) 的群組通訊引擎中,訊息快取可用的最大記憶體量。XCom 訊息快取會保存群組成員之間交換的訊息(及其元資料),作為共識協定的一部分。訊息快取除其他功能外,還用於重新連線到群組的成員,在一段時間無法與其他群組成員通訊後,恢復遺失的訊息。group_replication_member_expel_timeout
系統變數決定了等待期間(最長一小時),除了初始的 5 秒偵測期間外,允許成員返回群組而不是被驅逐。XCom 訊息快取的大小應參考此時間內的預期訊息量來設定,使其包含成員成功返回所需的所有遺失訊息。預設值是在 5 秒偵測期間後等待 5 秒,總時間為 10 秒。請確保您的系統上有足夠的記憶體可供您選擇的快取大小限制,並考量 MySQL Server 的其他快取和物件集區的大小。預設設定為 1073741824 個位元組 (1 GB)。最小設定為 134217728 個位元組 (128 MB),可讓您部署在可用記憶體受限的主機上,並具有良好的網路連線能力,以盡量減少群組成員暫時失去連線的頻率和持續時間。請注意,使用
group_replication_message_cache_size
設定的限制僅適用於儲存在快取中的資料,快取結構需要額外的 50 MB 記憶體。快取大小限制可以在執行階段動態增加或減少。如果您減少快取大小限制,XCom 會移除已決定並傳遞的最舊項目,直到目前大小低於限制。當從訊息快取中移除一個可能需要供目前無法連線的成員復原的訊息時,群組複寫的群組通訊系統 (GCS) 會透過警告訊息提醒您。如需更多關於調整訊息快取大小的資訊,請參閱第 20.7.6 節「XCom 快取管理」。
group_replication_paxos_single_leader
命令列格式 --group-replication-paxos-single-leader[={OFF|ON}]
系統變數 group_replication_paxos_single_leader
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
注意此系統變數是群組範圍的組態設定,而且需要完整重新啟動複寫群組才能使變更生效。
group_replication_paxos_single_leader
可讓群組通訊引擎在群組處於單一主要模式時,以單一共識領導者運作。使用預設設定OFF
,此行為會停用,並且群組的每個成員都會用作領導者,這是在此系統變數可用之前版本的行為。當系統變數設定為ON
時,群組通訊引擎可以使用單一領導者來驅動共識。以單一共識領導者運作可以提高單一主要模式下的效能和復原能力,特別是當群組中的某些次要成員目前無法連線時。如需更多資訊,請參閱第 20.7.3 節「單一共識領導者」。為了讓群組通訊引擎使用單一共識領導者,群組的通訊協定版本必須是 MySQL 8.0.27 或更高版本。使用
group_replication_get_communication_protocol()
函式來檢視群組的通訊協定版本。如果使用較低版本,則群組無法使用此行為。如果所有群組成員都支援,您可以使用group_replication_set_communication_protocol()
函式將群組的通訊協定設定為較高版本。如需更多資訊,請參閱第 20.5.1.4 節「設定群組的通訊協定版本」。此系統變數是群組範圍的組態設定。它在所有群組成員上都必須具有相同的值,而且在群組複製執行時無法變更,並且需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需安全引導已執行並認證交易之群組的指示,請參閱第 20.5.2 節「重新啟動群組」。如果群組已為此系統變數設定值,且加入成員已為此系統變數設定不同的值,則在變更值以符合之前,加入成員無法加入群組。如果群組成員已為此系統變數設定值,且加入成員不支援此系統變數,則無法加入群組。
效能綱要表
replication_group_communication_information
中的欄位WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
會顯示群組是否支援使用單一領導者,即使查詢成員上的group_replication_paxos_single_leader
目前設定為OFF
。如果群組在啟動時group_replication_paxos_single_leader
設定為ON
,且其通訊協定版本為 MySQL 8.0.27 或更高版本,則該欄位設定為 1。group_replication_poll_spin_loops
命令列格式 --group-replication-poll-spin-loops=#
系統變數 group_replication_poll_spin_loops
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值(64 位元平台) 18446744073709551615
最大值(32 位元平台) 4294967295
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_poll_spin_loops
指定群組通訊執行緒在等待更多傳入的網路訊息之前,等待通訊引擎互斥鎖釋放的次數。group_replication_preemptive_garbage_collection
命令列格式 --group-replication-preemptive-garbage-collection[=ON|OFF]
系統變數 group_replication_preemptive_garbage_collection
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
在單一主要模式(僅限)中啟用搶佔式垃圾收集,僅保留尚未在資料庫中提交的那些交易的寫入集。
此系統變數的值只能在群組複寫未執行時變更,且對在多重主要模式下執行的群組沒有影響。若要從多重主要模式變更為單一主要模式,請使用
group_replication_switch_to_single_primary_mode()
函式;如需更多資訊,請參閱第 20.5.1.2 節「變更群組模式」。group_replication_preemptive_garbage_collection
在所有群組成員上必須設定為相同的值。新加入者的group_replication_preemptive_garbage_collection
值必須與群組目前所有成員的值相同,否則無法加入。執行 MySQL 8.4.0 之前版本的群組成員不會傳送任何
group_replication_preemptive_garbage_collection
值;在這種情況下,該值會被視為OFF
。group_replication_preemptive_garbage_collection_rows_threshold
命令列格式 --group-replication-preemptive-garbage-collection-rows-threshold=#
系統變數 group_replication_preemptive_garbage_collection_rows_threshold
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 100000
最小值 10000
最大值 100000000
當在單一主要模式中啟用搶佔式垃圾收集時(
group_replication_preemptive_garbage_collection
為ON
),這是觸發使用它所需的認證資訊列數。此變數在以多主模式執行的群組中無效。
group_replication_recovery_compression_algorithms
命令列格式 --group-replication-recovery-compression-algorithms=值
系統變數 group_replication_recovery_compression_algorithms
範圍 全域 動態 是 SET_VAR
提示適用否 類型 設定 預設值 uncompressed
有效值 zlib
zstd
uncompressed
group_replication_recovery_compression_algorithms
指定用於群組複寫分散式復原連線,從捐贈者的二進位日誌傳輸狀態時所允許的壓縮演算法。可用的演算法與protocol_compression_algorithms
系統變數相同。如需更多資訊,請參閱第 6.2.8 節,「連線壓縮控制」。此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
如果伺服器已設定為支援複製(請參閱第 20.5.4.2 節,「分散式復原的複製」),且在分散式復原期間使用遠端複製操作,則此設定不適用。對於此狀態傳輸方法,會套用複製外掛程式的
clone_enable_compression
設定。group_replication_recovery_get_public_key
命令列格式 --group-replication-recovery-get-public-key[={OFF|ON}]
系統變數 group_replication_recovery_get_public_key
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_get_public_key
指定是否向來源請求基於 RSA 金鑰對密碼交換所需的公開金鑰。如果group_replication_recovery_public_key_path
設定為有效的公開金鑰檔案,則它會優先於group_replication_recovery_get_public_key
。如果您未使用 SSL 進行group_replication_recovery
通道的分散式復原(group_replication_recovery_use_ssl=ON
),且群組複寫的複寫使用者帳戶使用caching_sha2_password
外掛程式(預設值)進行驗證,則此變數適用。如需更多詳細資訊,請參閱第 20.6.3.1.1 節,「使用快取 SHA-2 驗證外掛程式的複寫使用者」。group_replication_recovery_public_key_path
命令列格式 --group-replication-recovery-public-key-path=檔案名稱
系統變數 group_replication_recovery_public_key_path
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 預設值 空字串
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_public_key_path
指定包含來源基於 RSA 金鑰對密碼交換所需的公開金鑰之副本的複本端檔案路徑名稱。該檔案必須為 PEM 格式。如果group_replication_recovery_public_key_path
設定為有效的公開金鑰檔案,則它會優先於group_replication_recovery_get_public_key
。如果您未使用 SSL 進行group_replication_recovery
通道的分散式復原(因此group_replication_recovery_use_ssl
設定為OFF
),且群組複寫的複寫使用者帳戶使用caching_sha2_password
外掛程式(預設值)或sha256_password
外掛程式(已棄用)進行驗證,則此變數適用。(對於sha256_password
,僅當 MySQL 是使用 OpenSSL 建置時,設定group_replication_recovery_public_key_path
才適用。)如需更多詳細資訊,請參閱第 20.6.3.1.1 節,「使用快取 SHA-2 驗證外掛程式的複寫使用者」。group_replication_recovery_reconnect_interval
命令列格式 --group-replication-recovery-reconnect-interval=#
系統變數 group_replication_recovery_reconnect_interval
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 60
最小值 0
最大值 31536000
單位 秒 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_reconnect_interval
指定在群組中未找到適合分散式復原的捐贈者時,重試連線之間睡眠的時間(以秒為單位)。group_replication_recovery_retry_count
命令列格式 --group-replication-recovery-retry-count=#
系統變數 group_replication_recovery_retry_count
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 10
最小值 0
最大值 31536000
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_retry_count
指定要加入的成員在放棄之前,嘗試連線至可用捐贈者進行分散式復原的次數。group_replication_recovery_ssl_ca
命令列格式 --group-replication-recovery-ssl-ca=值
系統變數 group_replication_recovery_ssl_ca
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_ca
指定包含分散式復原連線之受信任 SSL 憑證授權單位清單的檔案路徑。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。如果此伺服器已設定為支援複製(請參閱第 20.5.4.2 節,「分散式復原的複製」),且您已將
group_replication_recovery_use_ssl
設定為ON
,則群組複寫會自動將複製 SSL 選項clone_ssl_ca
的設定設定為符合您的group_replication_recovery_ssl_ca
設定。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_capath
命令列格式 --group-replication-recovery-ssl-capath=值
系統變數 group_replication_recovery_ssl_capath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_capath
指定包含分散式復原連線之受信任 SSL 憑證授權單位憑證的目錄路徑。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_cert
命令列格式 --group-replication-recovery-ssl-cert=值
系統變數 group_replication_recovery_ssl_cert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_cert
指定用於建立分散式復原安全連線的 SSL 憑證檔案名稱。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。如果此伺服器已設定為支援複製(請參閱第 20.5.4.2 節,「分散式復原的複製」),且您已將
group_replication_recovery_use_ssl
設定為ON
,則群組複寫會自動將複製 SSL 選項clone_ssl_cert
的設定設定為符合您的group_replication_recovery_ssl_cert
設定。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_cipher
命令列格式 --group-replication-recovery-ssl-cipher=值
系統變數 group_replication_recovery_ssl_cipher
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_cipher
指定允許 SSL 加密的密碼清單。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_crl
命令列格式 --group-replication-recovery-ssl-crl=值
系統變數 group_replication_recovery_ssl_crl
範圍 全域 動態 是 SET_VAR
提示適用否 類型 檔案名稱 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_crl
指定包含憑證撤銷清單的檔案目錄路徑。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_crlpath
命令列格式 --group-replication-recovery-ssl-crlpath=值
系統變數 group_replication_recovery_ssl_crlpath
範圍 全域 動態 是 SET_VAR
提示適用否 類型 目錄名稱 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_crlpath
指定包含憑證撤銷清單的檔案目錄路徑。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_key
命令列格式 --group-replication-recovery-ssl-key=值
系統變數 group_replication_recovery_ssl_key
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_key
指定用於建立安全連線的 SSL 金鑰檔案名稱。如需關於設定分散式復原的 SSL 資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線安全」。如果此伺服器已設定為支援複製 (請參閱第 20.5.4.2 節,「用於分散式復原的複製」),並且您已將
group_replication_recovery_use_ssl
設定為ON
,則群組複寫會自動設定複製 SSL 選項clone_ssl_key
的設定,以符合您對group_replication_recovery_ssl_key
的設定。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_ssl_verify_server_cert
命令列格式 --group-replication-recovery-ssl-verify-server-cert[={OFF|ON}]
系統變數 group_replication_recovery_ssl_verify_server_cert
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_ssl_verify_server_cert
指定分散式復原連線是否應檢查捐贈者傳送的憑證中的伺服器 Common Name 值。請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得關於為分散式復原設定 SSL 的資訊。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_tls_ciphersuites
命令列格式 --group-replication-recovery-tls-ciphersuites=值
系統變數 group_replication_recovery_tls_ciphersuites
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 NULL
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_tls_ciphersuites
指定當 TLSv1.3 用於分散式復原連線的連線加密時,允許的一個或多個密碼套件的冒號分隔清單,並且此伺服器執行個體是分散式復原連線中的用戶端,也就是加入的成員。如果當使用 TLSv1.3 時,此系統變數設定為NULL
(如果您不設定系統變數,則為預設值),則允許預設啟用的密碼套件,如第 8.3.2 節,「加密連線 TLS 通訊協定和密碼」中所列。如果此系統變數設定為空字串,則不允許任何密碼套件,因此不使用 TLSv1.3。請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得關於為分散式復原設定 SSL 的資訊。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。group_replication_recovery_tls_version
命令列格式 --group-replication-recovery-tls-version=值
系統變數 group_replication_recovery_tls_version
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 TLSv1.2,TLSv1.3
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_tls_version
指定當此伺服器執行個體是分散式復原連線中的用戶端時,也就是加入的成員,用於連線加密的一個或多個允許的 TLS 通訊協定的逗號分隔清單。每個分散式復原連線中作為用戶端 (加入的成員) 和伺服器 (捐贈者) 參與的群組成員,會協商它們都設定為支援的最高通訊協定版本。當 MySQL 通訊堆疊用於群組時(
group_replication_communication_stack = MYSQL
),此設定會用於群組通訊連線的 TLS/SSL 設定,以及分散式復原連線。預設值為 「
TLSv1.2,TLSv1.3
」。請確保指定的通訊協定版本是連續的,且沒有從序列中間跳過的任何版本號碼。重要對 TLSv1 和 TLSv1.1 連線通訊協定的支援已在 MySQL 8.0 中棄用,並稍後從 MySQL Server 中移除。如需更多資訊,請參閱移除對 TLSv1 和 TLSv1.1 通訊協定的支援。
在 MySQL 8.4 中,如果 MySQL Server 是使用 OpenSSL 1.1.1 編譯的,則支援 TLSv1.3 通訊協定。伺服器會在啟動時檢查 OpenSSL 的版本,如果版本低於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為 「
TLSv1.2
」。群組複寫支援 TLSv1.3,並支援密碼套件選擇。請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得更多資訊。
請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得關於為分散式復原設定 SSL 的資訊。
group_replication_recovery_use_ssl
命令列格式 --group-replication-recovery-use-ssl[={OFF|ON}]
系統變數 group_replication_recovery_use_ssl
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 OFF
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_use_ssl
指定群組成員之間的群組複寫分散式復原連線是否應使用 SSL。請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得關於為分散式復原設定 SSL 的資訊。如果此伺服器已設定為支援複製 (請參閱第 20.5.4.2 節,「用於分散式復原的複製」),並且您將此選項設定為
ON
,則群組複寫會使用 SSL 進行遠端複製作業,以及從捐贈者的二進位記錄進行狀態傳輸。如果您將此選項設定為OFF
,則群組複寫不會使用 SSL 進行遠端複製作業。group_replication_recovery_zstd_compression_level
命令列格式 --group-replication-recovery-zstd-compression-level=#
系統變數 group_replication_recovery_zstd_compression_level
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 3
最小值 1
最大值 22
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_recovery_zstd_compression_level
指定用於群組複寫分散式復原連線的壓縮層級,該連線使用zstd
壓縮演算法。允許的層級為 1 到 22,數值越大表示壓縮層級越高。預設的zstd
壓縮層級為 3。對於不使用zstd
壓縮的分散式復原連線,此變數沒有任何影響。如需更多資訊,請參閱第 6.2.8 節,「連線壓縮控制」。
group_replication_single_primary_mode
命令列格式 --group-replication-single-primary-mode[={OFF|ON}]
系統變數 group_replication_single_primary_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
注意此系統變數是群組範圍的組態設定,而且需要完整重新啟動複寫群組才能使變更生效。
group_replication_single_primary_mode
指示群組自動選擇單一伺服器,使其成為處理讀取/寫入工作負載的伺服器。此伺服器是主要伺服器,而所有其他伺服器都是次要伺服器。此系統變數是群組範圍的組態設定。它在所有群組成員上都必須具有相同的值,而且在群組複製執行時無法變更,並且需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需安全引導已執行並認證交易之群組的指示,請參閱第 20.5.2 節「重新啟動群組」。如果群組已為此系統變數設定值,且加入成員已為此系統變數設定不同的值,則在變更值以符合之前,加入成員無法加入群組。如果群組成員已為此系統變數設定值,且加入成員不支援此系統變數,則無法加入群組。
將此變數設定為
ON
會導致忽略group_replication_auto_increment_increment
的任何設定。使用
group_replication_switch_to_single_primary_mode()
和group_replication_switch_to_multi_primary_mode()
函式,可以在群組仍在執行時變更此系統變數的值。更多資訊請參閱章節 20.5.1.2,「變更群組模式」。-
命令列格式 --group-replication-ssl-mode=值
系統變數 group_replication_ssl_mode
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 DISABLED
有效值 DISABLED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_ssl_mode
設定群組複寫成員之間群組通訊連線的安全狀態。可能的值如下- DISABLED
建立未加密的連線 (預設值)。
- REQUIRED
如果伺服器支援安全連線,則建立安全連線。
- VERIFY_CA
與
REQUIRED
類似,但會額外根據設定的憑證授權單位 (CA) 憑證驗證伺服器 TLS 憑證。- VERIFY_IDENTITY
與
VERIFY_CA
類似,但會額外驗證伺服器憑證是否與嘗試建立連線的主機相符。
請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」,以取得關於為群組通訊設定 SSL 的資訊。
group_replication_start_on_boot
命令列格式 --group-replication-start-on-boot[={OFF|ON}]
系統變數 group_replication_start_on_boot
範圍 全域 動態 是 SET_VAR
提示適用否 類型 布林值 預設值 ON
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_start_on_boot
指定伺服器是否應在伺服器啟動期間自動啟動群組複寫 (ON
) 或不啟動 (OFF
)。當您將此選項設定為ON
時,群組複寫會在遠端複製作業用於分散式復原之後自動重新啟動。若要在伺服器啟動期間自動啟動群組複寫,必須使用
CHANGE REPLICATION SOURCE TO
陳述式,將分散式復原的使用者認證儲存在伺服器上的複寫中繼資料儲存庫中。如果您偏好在START GROUP_REPLICATION
陳述式中指定使用者認證 (僅將使用者認證儲存在記憶體中),請確保將group_replication_start_on_boot
設定為OFF
。-
命令列格式 --group-replication-tls-source=值
系統變數 group_replication_tls_source
範圍 全域 動態 是 SET_VAR
提示適用否 類型 列舉 預設值 mysql_main
有效值 mysql_main
mysql_admin
此系統變數的值可以在 Group Replication 執行時變更,但變更只有在您停止並重新啟動群組成員上的 Group Replication 後才會生效。
group_replication_tls_source
指定群組複寫的 TLS 材料來源。 group_replication_transaction_size_limit
命令列格式 --group-replication-transaction-size-limit=#
系統變數 group_replication_transaction_size_limit
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 150000000
最小值 0
最大值 2147483647
單位 位元組 此系統變數在所有群組成員上應具有相同的值。此系統變數的值可以在群組複寫執行時變更。變更會立即在群組成員上生效,並從該成員上開始的下一個交易開始套用。在此過程中,允許群組成員之間的系統變數值不同,但可能會拒絕某些交易。
group_replication_transaction_size_limit
設定複寫群組接受的最大交易大小 (以位元組為單位)。大於此大小的交易會被接收成員回滾,且不會廣播到群組。大型交易可能會在記憶體配置方面對複寫群組造成問題,這可能會導致系統速度變慢,或者在網路頻寬消耗方面造成問題,這可能會導致成員因忙於處理大型交易而被懷疑已失敗。當此系統變數設定為 0 時,群組接受的交易大小沒有限制。此系統變數的預設設定為 150000000 位元組(約 143 MB)。請根據您希望群組容忍的最大訊息大小調整此系統變數的值,並記住處理交易所需的時間與其大小成正比。
group_replication_transaction_size_limit
的值在所有群組成員上應相同。有關大型交易的更多緩解策略,請參閱第 20.3.2 節「群組複製限制」。group_replication_unreachable_majority_timeout
命令列格式 --group-replication-unreachable-majority-timeout=#
系統變數 group_replication_unreachable_majority_timeout
範圍 全域 動態 是 SET_VAR
提示適用否 類型 整數 預設值 0
最小值 0
最大值 31536000
單位 秒 此系統變數的值可以在群組複製運行時更改,並且更改會立即生效。當發生需要此行為的問題時,會讀取系統變數的目前值。
group_replication_unreachable_majority_timeout
指定成員在遭受網路分割且無法連線到大多數成員之前等待離開群組的秒數。在一個由 5 台伺服器(S1、S2、S3、S4、S5)組成的群組中,如果(S1、S2)和(S3、S4、S5)之間發生斷線,則會發生網路分割。第一個群組(S1、S2)現在處於少數,因為它無法聯絡群組中一半以上的成員。當大多數群組(S3、S4、S5)保持運作時,少數群組會等待指定的網路重新連線時間。有關此情境的詳細說明,請參閱第 20.7.8 節「處理網路分割和仲裁遺失」。預設情況下,
group_replication_unreachable_majority_timeout
設定為 0,這表示由於網路分割而發現自己處於少數的成員會永遠等待離開群組。如果您設定逾時,當指定的時間經過時,少數群組處理的所有待處理交易都會回滾,並且少數分割區中的伺服器會移至ERROR
狀態。如果成員的group_replication_autorejoin_tries
系統變數設定為指定自動重新加入嘗試的次數,它會繼續進行指定次數的嘗試以在超級唯讀模式下重新加入群組。如果成員未指定任何自動重新加入嘗試,或者已用盡指定的嘗試次數,則它會遵循系統變數group_replication_exit_state_action
指定的動作。警告當您擁有一個對稱群組,例如只有兩個成員(S0、S2)時,如果發生網路分割且沒有大多數成員,則在設定的逾時之後,所有成員都會進入
ERROR
狀態。有關使用此選項的更多資訊,請參閱第 20.7.7.2 節「無法連線到大多數成員的逾時」。
group_replication_view_change_uuid
命令列格式 --group-replication-view-change-uuid=value
已過時 是 系統變數 group_replication_view_change_uuid
範圍 全域 動態 是 SET_VAR
提示適用否 類型 字串 預設值 AUTOMATIC
注意此系統變數是群組範圍的組態設定,而且需要完整重新啟動複寫群組才能使變更生效。
group_replication_view_change_uuid
指定一個替代的 UUID,以用作群組產生的視圖變更事件的 GTID 中識別符號的 UUID 部分。替代的 UUID 使這些內部產生的交易很容易與群組從用戶端接收的交易區分開來。如果您設定允許在群組之間進行容錯移轉,並且您需要識別並捨棄特定於備份群組的交易,這可能會很有用。此系統變數的預設值為AUTOMATIC
,表示視圖變更事件的 GTID 使用group_replication_group_name
系統變數指定的群組名稱,就像來自用戶端的交易一樣。不具備此系統變數的版本的群組成員會被視為具有值AUTOMATIC
。替代的 UUID 必須與
group_replication_group_name
系統變數指定的群組名稱不同,並且必須與任何群組成員的伺服器 UUID 不同。它也必須與使用CHANGE REPLICATION SOURCE TO
陳述式的ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
選項在此拓樸中的任何位置套用至複寫通道上匿名交易的 GTID 中使用的任何 UUID 不同。此系統變數是群組範圍的組態設定。它在所有群組成員上都必須具有相同的值,而且在群組複製執行時無法變更,並且需要完整重新啟動群組(由具有
group_replication_bootstrap_group=ON
的伺服器進行引導),變更的值才會生效。如需安全引導已執行並認證交易之群組的指示,請參閱第 20.5.2 節「重新啟動群組」。如果群組已為此系統變數設定值,且加入成員已為此系統變數設定不同的值,則在變更值以符合之前,加入成員無法加入群組。如果群組成員已為此系統變數設定值,且加入成員不支援此系統變數,則無法加入群組。
視圖變更事件的記錄已由共用復原中繼資料取代;因此,此變數已過時,並將在未來版本的 MySQL 中移除。