文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  群組複寫系統變數

20.9.1 群組複寫系統變數

本節列出特定於群組複寫外掛程式的系統變數。

每個群組複寫系統變數的名稱都以 group_replication_ 為前綴。

注意

InnoDB 集群使用群組複寫,但群組複寫系統變數的預設值可能與本節中記錄的預設值不同。例如,在 InnoDB 集群中,group_replication_communication_stack 的預設值為 MYSQL,而不是預設群組複寫實作的 XCOM

如需詳細資訊,請參閱MySQL InnoDB 集群

群組複寫群組成員上的一些系統變數 (包括一些特定於群組複寫的系統變數和一些一般系統變數) 是群組範圍的組態設定。這些系統變數在所有群組成員上都必須具有相同的值,並且需要完整重新啟動群組 (由具有 group_replication_bootstrap_group=ON 的伺服器引導) 才能使值變更生效。如需重新啟動每個成員都已停止的群組的指示,請參閱第 20.5.2 節,「重新啟動群組」

如果正在執行的群組針對群組範圍的組態設定設定了值,且加入的成員針對該系統變數設定了不同的值,則加入的成員在變更值以符合之前,無法加入群組。如果群組針對其中一個系統變數設定了值,且加入的成員不支援該系統變數,則該成員無法加入群組。

下列系統變數是群組範圍的組態設定

在群組複寫執行時,無法透過一般方法變更群組範圍的組態設定,但可以使用 group_replication_switch_to_single_primary_mode()group_replication_switch_to_multi_primary_mode() 函式,以在群組仍在執行時變更 group_replication_single_primary_modegroup_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_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 Server 的 hostnameport 系統變數所指定。如果 report_port 系統變數指定了替代埠號,則改用該埠號。Performance Schema 表格 replication_group_membersMEMBER_HOSTMEMBER_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 Server 設定,但必須指派給伺服器。

    • 必須使用 portreport_portadmin_port 系統變數為 MySQL Server 設定埠。

    • 如果使用 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 Server 版本低於群組。使用預設設定 OFF,如果伺服器執行的版本低於現有群組成員,則不允許加入複製群組。此標準原則可確保群組的所有成員都能交換訊息並套用交易。請注意,執行 MySQL 8.0.17 或更高版本的成員在檢查其相容性時會考慮版本的修補程式版本。執行 MySQL 8.0.16 或更早版本的成員僅考慮主要版本。

    僅在以下情況下,將 group_replication_allow_local_lower_version_join 設定為 ON

    • 必須緊急將伺服器新增至群組,以提高群組的容錯能力,且只有較舊的版本可用。

    • 您想要復原一個或多個複製群組成員的升級,而無需關閉整個群組並再次引導它。

    警告

    將此選項設定為 ON 不會使新成員與群組相容,並允許它加入群組,而不會針對現有成員的不相容行為採取任何保護措施。為確保新成員的正確操作,請採取以下兩項預防措施

    1. 在執行較低版本的伺服器加入群組之前,請停止該伺服器上的所有寫入。

    2. 從執行較低版本的伺服器加入群組時起,停止群組中其他伺服器上的所有寫入。

    如果沒有這些預防措施,執行較低版本的伺服器可能會遇到困難,並終止並顯示錯誤。

  • 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_modeON 時,設定 group_replication_auto_increment_increment 無效。

    在伺服器執行個體上啟動 Group Replication 時,伺服器系統變數 auto_increment_increment 的值會變更為此值,伺服器系統變數 auto_increment_offset 的值會變更為伺服器 ID。停止 Group Replication 時,這些變更會還原。只有當 auto_increment_incrementauto_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_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=value
    系統變數 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 伺服器的原生實作,支援驗證和網路命名空間,並可在發佈時立即存取新的安全功能。群組的所有成員都必須使用相同的通訊堆疊。

    當您使用 MySQL 通訊堆疊代替 XCom 時,MySQL 伺服器會使用自己的驗證和加密協定來建立群組成員之間的每個連線。

    注意

    如果您使用 InnoDB Cluster,group_replication_communication_stack 的預設值為 MYSQL

    如需詳細資訊,請參閱MySQL InnoDB 集群

    當您設定群組以使用 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

    命令列格式 --group-replication-consistency=值
    系統變數 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 交易會等待所有先前的交易完成後才會執行。這可確保此交易僅透過影響交易的延遲,讀取最新的值。這可減少每個 RW 交易的同步處理額外負荷,方法是確保同步處理僅在 RO 交易上使用。此一致性等級也包含 BEFORE_ON_PRIMARY_FAILOVER 所提供的一致性保證。

    • AFTER

      RW 交易會等待其變更套用至所有其他成員。此值對 RO 交易沒有影響。此模式可確保當交易在本機成員上提交時,任何後續交易都會在任何群組成員上讀取寫入的值或較新的值。將此模式用於主要執行 RO 作業的群組,以確保套用的 RW 交易會在提交後套用至各處。您的應用程式可以使用此模式來確保後續讀取會擷取包含最新寫入的最新資料。這可減少每個 RO 交易的同步處理額外負荷,方法是確保同步處理僅在 RW 交易上使用。此一致性等級也包含 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=值
    系統變數 group_replication_exit_state_action
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 列舉
    預設值 OFFLINE_MODE
    有效值

    ABORT_SERVER

    OFFLINE_MODE

    READ_ONLY

    此系統變數的值可以在群組複寫執行時變更,且變更會立即生效。當發生需要此行為的問題時,會讀取系統變數的目前值。

    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_ADMINSUPER 權限連線也一樣。

    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_quotagroup_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=值
    系統變數 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

    命令列格式 --group-replication-group-name=value
    系統變數 group_replication_group_name
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串

    此系統變數的值在群組複寫運作時無法變更。

    group_replication_group_name 指定此伺服器實例所屬的群組名稱,該名稱必須是有效的 UUID。此 UUID 構成 GTID 的一部分,當群組成員從用戶端接收的交易,以及群組成員在內部產生的視圖變更事件寫入二進位日誌時,會使用該 UUID。

    重要事項

    必須使用唯一的 UUID。

  • group_replication_group_seeds

    命令列格式 --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 伺服器的 hostnameport 系統變數所指定的一樣)。種子成員的位址指定為以逗號分隔的清單,例如 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,這允許來自主機上作用中私有子網路的連線。群組複寫 (Group Replication) 的群組通訊引擎 (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 位址。您可以將 CIDR 標記法與主機名稱或 IP 位址結合使用,以允許具有特定網路前綴的 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 位址列出,而加入成員具有 IPv4 的 group_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=value
    系統變數 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 位址列出,而此成員具有 IPv4 的 group_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=aaaa

    • member-2: group_replication_member_weight=40, server_uuid=bbbb

    • member-3: group_replication_member_weight=40, server_uuid=cccc

    • member-4: group_replication_member_weight=40, server_uuid=dddd

    在選出新的主要成員期間,上述成員將排序為 member-2member-3member-4member-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 伺服器的其他快取和物件集區的大小。預設設定為 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 之前的版本上運行的群組成員不會發送 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_collectionON),這是觸發其使用的認證資訊列數。

    此變數對在多主模式下運行的群組沒有影響。

  • group_replication_recovery_compression_algorithms

    命令列格式 --group-replication-recovery-compression-algorithms=值
    系統變數 group_replication_recovery_compression_algorithms
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 設定
    預設值 uncompressed
    有效值

    zlib

    zstd

    uncompressed

    可以在 Group Replication 執行時變更此系統變數的值,但變更僅在您停止並重新啟動群組成員上的 Group Replication 後才會生效。

    group_replication_recovery_compression_algorithms 指定允許用於群組複製分散式復原連線的壓縮演算法,以便從捐贈者的二進制日誌傳輸狀態。可用的演算法與 protocol_compression_algorithms 系統變數相同。有關詳細資訊,請參閱第 6.2.8 節,「連線壓縮控制」

    如果伺服器已設定為支援複製 (請參閱第 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=value
    系統變數 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=value
    系統變數 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=value
    系統變數 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 指定分散式復原連線是否應檢查捐贈者傳送的憑證中的伺服器通用名稱值。有關為分散式復原配置 SSL 的資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」

    當 MySQL 通訊堆疊用於群組時 (group_replication_communication_stack = MYSQL),此設定用於群組通訊連線以及分散式復原連線的 TLS/SSL 配置。

  • group_replication_recovery_tls_ciphersuites

    命令列格式 --group-replication-recovery-tls-ciphersuites=value
    系統變數 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。有關為分散式復原配置 SSL 的資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」

    當 MySQL 通訊堆疊用於群組時 (group_replication_communication_stack = MYSQL),此設定用於群組通訊連線以及分散式復原連線的 TLS/SSL 配置。

  • group_replication_recovery_tls_version

    命令列格式 --group-replication-recovery-tls-version=value
    系統變數 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 9.0 提供對 TLSv1.3 通訊協定的支援,前提是使用 OpenSSL 1.1.1 編譯 MySQL Server。伺服器會在啟動時檢查 OpenSSL 的版本,如果低於 1.1.1,則會從系統變數的預設值中移除 TLSv1.3。在這種情況下,預設值為 TLSv1.2

    • 群組複寫支援 TLSv1.3,並支援密碼套件選取。如需更多資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (SSL) 保護群組通訊連線」

    有關為分散式復原配置 SSL 的資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (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。有關為分散式復原配置 SSL 的資訊,請參閱第 20.6.2 節,「使用安全通訊端層 (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=value
    系統變數 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,但會額外驗證伺服器 TLS 憑證是否與設定的憑證授權機構 (CA) 憑證相符。

    VERIFY_IDENTITY

    如同 VERIFY_CA,但會額外驗證伺服器憑證是否與嘗試連線的主機相符。

    有關設定群組通訊的 SSL 的資訊,請參閱第 20.6.2 節「使用安全通訊端層 (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=值
    系統變數 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=值
    已棄用
    系統變數 group_replication_view_change_uuid
    範圍 全域
    動態
    SET_VAR 提示適用
    類型 字串
    預設值 AUTOMATIC
    注意

    此系統變數是群組範圍的配置設定,而且必須完整重新啟動複寫群組,變更才會生效。

    group_replication_view_change_uuid 指定要用作群組產生之檢視變更事件 GTID 中識別碼的 UUID 部分的替代 UUID。替代 UUID 可讓這些內部產生的交易容易與群組從用戶端接收的交易區分開來。如果您的設定允許群組之間的容錯移轉,且您需要識別並捨棄特定於備份群組的交易,這會很有用。此系統變數的預設值為 AUTOMATIC,表示檢視變更事件的 GTID 會使用 group_replication_group_name 系統變數指定的群組名稱,就像用戶端的交易一樣。版本不具備此系統變數的群組成員會被視為具有值 AUTOMATIC

    替代 UUID 必須與 group_replication_group_name 系統變數指定的群組名稱不同,且必須與任何群組成員的伺服器 UUID 不同。它也必須與使用 CHANGE REPLICATION SOURCE TO 陳述式的 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 選項,在拓撲中的任何位置的複寫通道上套用至匿名交易的任何 UUID 不同。

    此系統變數是群組範圍的配置設定。它在所有群組成員上的值必須相同,且無法在群組複製執行時變更,而且需要完整重新啟動群組(由具有 group_replication_bootstrap_group=ON 的伺服器執行引導),才能使值變更生效。如需安全引導已執行並通過認證的交易群組的相關指示,請參閱 第 20.5.2 節,「重新啟動群組」

    如果群組針對此系統變數設定了值,而加入的成員針對此系統變數設定了不同的值,則加入的成員必須將值變更為相符,才能加入群組。如果群組成員針對此系統變數設定了值,而加入的成員不支援此系統變數,則無法加入群組。

    檢視變更事件的記錄會由復原中繼資料的共用取代;因此,此變數已過時,並將在未來版本的 MySQL 中移除。