本節說明適用於複本伺服器的伺服器選項與系統變數,並包含下列內容
在命令列或選項檔案中指定選項。許多選項可以在伺服器執行時,使用CHANGE REPLICATION SOURCE TO
陳述式設定。使用SET
指定系統變數值。
伺服器 ID。在來源與每個複本上,您必須設定server_id
系統變數,以建立 1 到 232 − 1 範圍內的唯一複製 ID。「唯一」表示每個 ID 必須與複製拓樸中任何其他來源或複本所使用的任何其他 ID 不同。範例 my.cnf
檔案
[mysqld]
server-id=3
本節說明用於控制複本伺服器的啟動選項。許多選項可以在伺服器執行時,使用CHANGE REPLICATION SOURCE TO
陳述式設定。其他選項,例如 --replicate-*
選項,只能在複本伺服器啟動時設定。與複製相關的系統變數將在本節稍後討論。
-
命令列格式 --master-retry-count=#
已棄用 是 類型 整數 預設值 10
最小值 0
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
此選項已棄用;預計將在未來的 MySQL 版本中移除。請改用
CHANGE REPLICATION SOURCE TO
陳述式的SOURCE_RETRY_COUNT
選項。 -
命令列格式 --max-relay-log-size=#
系統變數 max_relay_log_size
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 1073741824
單位 位元組 區塊大小 4096
伺服器自動輪換中繼日誌檔案的大小。如果此值為非零值,則當中繼日誌大小超過此值時,會自動輪換。如果此值為零(預設值),則中繼日誌輪換發生時的大小由
max_binlog_size
的值決定。如需更多資訊,請參閱章節 19.2.4.1,「中繼日誌」。 -
命令列格式 --relay-log-purge[={OFF|ON}]
系統變數 relay_log_purge
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
停用或啟用不再需要時自動清除中繼日誌。預設值為 1(啟用)。這是一個全域變數,可以使用
SET GLOBAL relay_log_purge =
動態變更。當啟用N
--relay-log-recovery
選項時停用中繼日誌的清除會造成資料一致性的風險,因此不具備當機安全性。 -
命令列格式 --relay-log-space-limit=#
系統變數 relay_log_space_limit
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 18446744073709551615
單位 位元組 此選項會對複本上所有中繼日誌的總大小設定以位元組為單位的上限。值為 0 表示 「無限制」。這對於磁碟空間有限的複本伺服器主機很有用。當達到限制時,I/O(接收器)執行緒會停止從來源伺服器讀取二進位日誌事件,直到 SQL 執行緒趕上並刪除一些未使用的中繼日誌。請注意,此限制並非絕對:在某些情況下,SQL(應用程式)執行緒需要更多事件才能刪除中繼日誌。在這種情況下,接收器執行緒會超出限制,直到應用程式執行緒可以刪除某些中繼日誌為止,因為不這樣做會造成死結。您不應將
--relay-log-space-limit
設定為小於--max-relay-log-size
值兩倍的值(如果--max-relay-log-size
為 0,則為--max-binlog-size
)。在這種情況下,接收器執行緒可能因為超出--relay-log-space-limit
而等待可用空間,但應用程式執行緒沒有中繼日誌可清除,也無法滿足接收器執行緒的需求。這會強制接收器執行緒暫時忽略--relay-log-space-limit
。 -
命令列格式 --replicate-do-db=name
類型 字串 使用資料庫的名稱建立複寫篩選器。也可以使用
CHANGE REPLICATION FILTER REPLICATE_DO_DB
建立這類篩選器。此選項支援通道特定的複寫篩選器,讓多來源複本可以使用不同來源的特定篩選器。若要在名為
channel_1
的通道上設定通道特定的複寫篩選器,請使用--replicate-do-db:
。在這種情況下,第一個冒號會被解譯為分隔符號,後續的冒號則為字面冒號。如需更多資訊,請參閱章節 19.2.5.4,「基於複寫通道的篩選器」。channel_1
:db_name
注意全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。此複寫篩選器的精確效果取決於使用的是陳述式型複寫還是以列為基礎的複寫。
陳述式型複寫。告知複寫 SQL 執行緒將複寫限制為預設資料庫(也就是由
USE
選取的資料庫)為db_name
的陳述式。若要指定多個資料庫,請多次使用此選項,每個資料庫一次;但是,這樣做不會複寫跨資料庫的陳述式,例如UPDATE
,同時選取不同的資料庫(或沒有選取任何資料庫)。some_db.some_table
SET foo='bar'警告若要指定多個資料庫,您必須使用此選項的多個執行個體。由於資料庫名稱可以包含逗號,如果您提供逗號分隔清單,則該清單會被視為單一資料庫的名稱。
以下範例說明在使用陳述式型複寫時,結果可能不如預期:如果複本是以
--replicate-do-db=sales
啟動,並且您在來源上發出下列陳述式,則UPDATE
陳述式不會被複寫USE prices; UPDATE sales.january SET amount=amount+1000;
這種 「僅檢查預設資料庫」 行為的主要原因是,單從陳述式很難判斷是否應該複寫(例如,如果您使用的是跨多個資料庫的多表
DELETE
陳述式或多表UPDATE
陳述式)。如果沒有需要,則只檢查預設資料庫而非所有資料庫也比較快。以列為基礎的複寫。告知複寫 SQL 執行緒將複寫限制為資料庫
db_name
。僅變更屬於db_name
的表格;目前的資料庫對此沒有任何影響。假設複本是以--replicate-do-db=sales
啟動,並且以列為基礎的複寫生效,然後在來源上執行下列陳述式USE prices; UPDATE sales.february SET amount=amount+100;
複本上
sales
資料庫中的february
表格會根據UPDATE
陳述式進行變更;無論是否發出USE
陳述式,都會發生這種情況。但是,當使用以列為基礎的複寫和--replicate-do-db=sales
時,在來源上發出下列陳述式對複本沒有任何影響USE prices; UPDATE prices.march SET amount=amount-25;
即使將
USE prices
陳述式變更為USE sales
,UPDATE
陳述式的效果仍然不會被複寫。關於
--replicate-do-db
在陳述式型複寫和以列為基礎的複寫中處理方式的另一個重要差異,發生在參照多個資料庫的陳述式上。假設複本是以--replicate-do-db=db1
啟動,並且在來源上執行下列陳述式USE db1; UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
如果您使用的是陳述式型複寫,則複本上的兩個表格都會更新。但是,當使用以列為基礎的複寫時,複本上只會影響
table1
;由於table2
位於不同的資料庫中,因此複本上的table2
不會因UPDATE
而變更。現在假設,使用的不是USE db1
陳述式,而是使用了USE db4
陳述式USE db4; UPDATE db1.table1, db2.table2 SET db1.table1.col1 = 10, db2.table2.col2 = 20;
在這種情況下,當使用陳述式型複寫時,
UPDATE
陳述式對複本沒有任何影響。但是,如果您使用的是以列為基礎的複寫,UPDATE
會變更複本上的table1
,但不會變更table2
,換句話說,只會變更以--replicate-do-db
指定名稱的資料庫中的表格,而預設資料庫的選擇對此行為沒有任何影響。如果您需要跨資料庫更新才能運作,請改用
--replicate-wild-do-table=
。請參閱章節 19.2.5,「伺服器如何評估複寫篩選規則」。db_name
.%注意此選項對複寫的影響方式與
--binlog-do-db
對二進位記錄的影響方式相同,並且複寫格式對--replicate-do-db
如何影響複寫行為的影響,與記錄格式對--binlog-do-db
行為的影響相同。 -
命令列格式 --replicate-ignore-db=name
類型 字串 使用資料庫的名稱建立複寫篩選器。也可以使用
CHANGE REPLICATION FILTER REPLICATE_IGNORE_DB
建立這類篩選器。此選項支援針對特定通道的複製篩選器,使多來源複本能夠針對不同的來源使用特定的篩選器。若要設定名為
channel_1
的通道上的特定通道複製篩選器,請使用--replicate-ignore-db:
。在此情況下,第一個冒號會被解譯為分隔符號,後續的冒號則為字面上的冒號。請參閱第 19.2.5.4 節,「複製通道式篩選器」以取得更多資訊。channel_1
:db_name
注意全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。若要指定多個要忽略的資料庫,請多次使用此選項,每個資料庫使用一次。因為資料庫名稱可以包含逗號,如果您提供以逗號分隔的清單,則會將其視為單一資料庫的名稱。
與
--replicate-do-db
相同,此篩選的精確效果取決於是否使用基於語句或基於列的複製,並在接下來的幾段中進行描述。基於語句的複製。告知複製 SQL 線程不要複製預設資料庫(即由
USE
選取的資料庫)為db_name
的任何語句。基於列的複製。告知複製 SQL 線程不要更新資料庫
db_name
中的任何表格。預設資料庫沒有影響。當使用基於語句的複製時,以下範例不會如您預期的那樣運作。假設複本以
--replicate-ignore-db=sales
啟動,並且您在來源上發出以下語句USE prices; UPDATE sales.january SET amount=amount+1000;
UPDATE
語句在這種情況下會被複製,因為--replicate-ignore-db
僅適用於預設資料庫(由USE
語句決定)。因為語句中明確指定了sales
資料庫,所以語句未被篩選。然而,當使用基於列的複製時,UPDATE
語句的效果不會傳播到複本,並且複本的sales.january
表格副本保持不變;在此情況下,--replicate-ignore-db=sales
會導致複本忽略對來源sales
資料庫副本中的表格所做的所有變更。如果您使用跨資料庫更新,並且不希望這些更新被複製,則不應使用此選項。請參閱第 19.2.5 節,「伺服器如何評估複製篩選規則」。
如果您需要跨資料庫更新才能運作,請改用
--replicate-wild-ignore-table=
。請參閱第 19.2.5 節,「伺服器如何評估複製篩選規則」。db_name
.%注意此選項對複製的影響方式與
--binlog-ignore-db
對二進位日誌記錄的影響相同,並且複製格式對--replicate-ignore-db
如何影響複製行為的影響,與日誌記錄格式對--binlog-ignore-db
行為的影響相同。 --replicate-do-table=
db_name.tbl_name
命令列格式 --replicate-do-table=name
類型 字串 透過告知複製 SQL 線程將複製限制為給定表格來建立複製篩選器。若要指定多個表格,請多次使用此選項,每個表格使用一次。與
--replicate-do-db
相比,這適用於跨資料庫更新和預設資料庫更新。請參閱第 19.2.5 節,「伺服器如何評估複製篩選規則」。您也可以透過發出CHANGE REPLICATION FILTER REPLICATE_DO_TABLE
語句來建立此類篩選器。此選項支援針對特定通道的複製篩選器,使多來源複本能夠針對不同的來源使用特定的篩選器。若要設定名為
channel_1
的通道上的特定通道複製篩選器,請使用--replicate-do-table:
。在此情況下,第一個冒號會被解譯為分隔符號,後續的冒號則為字面上的冒號。請參閱第 19.2.5.4 節,「複製通道式篩選器」以取得更多資訊。channel_1
:db_name.tbl_name
注意全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。此選項僅影響適用於表格的語句。它不影響僅適用於其他資料庫物件(例如預存常式)的語句。若要篩選在預存常式上運作的語句,請使用一個或多個
--replicate-*-db
選項。--replicate-ignore-table=
db_name.tbl_name
命令列格式 --replicate-ignore-table=name
類型 字串 透過告知複製 SQL 線程不要複製任何更新指定表格的語句(即使相同的語句可能會更新任何其他表格)來建立複製篩選器。若要指定多個要忽略的表格,請多次使用此選項,每個表格使用一次。與
--replicate-ignore-db
相比,這適用於跨資料庫更新。請參閱第 19.2.5 節,「伺服器如何評估複製篩選規則」。您也可以透過發出CHANGE REPLICATION FILTER REPLICATE_IGNORE_TABLE
語句來建立此類篩選器。此選項支援針對特定通道的複製篩選器,使多來源複本能夠針對不同的來源使用特定的篩選器。若要設定名為
channel_1
的通道上的特定通道複製篩選器,請使用--replicate-ignore-table:
。在此情況下,第一個冒號會被解譯為分隔符號,後續的冒號則為字面上的冒號。請參閱第 19.2.5.4 節,「複製通道式篩選器」以取得更多資訊。channel_1
:db_name.tbl_name
注意全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。此選項僅影響適用於表格的語句。它不影響僅適用於其他資料庫物件(例如預存常式)的語句。若要篩選在預存常式上運作的語句,請使用一個或多個
--replicate-*-db
選項。--replicate-rewrite-db=
from_name
->to_name
命令列格式 --replicate-rewrite-db=old_name->new_name
類型 字串 告知複本建立一個複製篩選器,將來源上的資料庫名稱
from_name
翻譯為to_name
。僅影響涉及表格的語句,不影響CREATE DATABASE
、DROP DATABASE
和ALTER DATABASE
等語句。若要指定多個重寫,請多次使用此選項。伺服器使用第一個具有符合的
from_name
值的選項。資料庫名稱翻譯是在測試--replicate-*
規則之前完成的。您也可以透過發出CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB
語句來建立此類篩選器。如果您在命令列上使用
--replicate-rewrite-db
選項,並且>
字元對您的命令解譯器來說是特殊的,請引用選項值。例如$> mysqld --replicate-rewrite-db="olddb->newdb"
--replicate-rewrite-db
選項的效果,會因查詢使用基於語句或基於列的二進位日誌記錄格式而有所不同。對於基於語句的格式,DML 語句會根據目前資料庫進行翻譯,如USE
語句所指定。對於基於列的格式,DML 語句會根據修改後的表格所在的資料庫進行翻譯。DDL 語句始終根據目前資料庫進行篩選,如USE
語句所指定,無論二進位日誌記錄格式如何。為了確保重寫產生預期的結果,尤其是在與其他複製篩選選項結合使用時,請在使用
--replicate-rewrite-db
選項時遵循以下建議如果遵循這些建議,則可以安全地將
--replicate-rewrite-db
選項與表格層級複製篩選選項(例如--replicate-do-table
)結合使用。此選項支援針對特定通道的複製篩選器,使多來源複本能夠針對不同的來源使用特定的篩選器。指定通道名稱,後跟一個冒號,然後是篩選器規格。第一個冒號會被解譯為分隔符號,後續的任何冒號都會被解譯為字面上的冒號。例如,若要設定名為
channel_1
的通道上的特定通道複製篩選器,請使用$> mysqld --replicate-rewrite-db=channel_1:db_name1->db_name2
如果您使用冒號但未指定通道名稱,則該選項會設定預設複製通道的複製篩選器。請參閱第 19.2.5.4 節,「複製通道式篩選器」以取得更多資訊。
注意全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。-
命令列格式 --replicate-same-server-id[={OFF|ON}]
類型 布林值 預設值 OFF
此選項用於副本伺服器。預設值為 0(
FALSE
)。將此選項設為 1(TRUE
)時,副本伺服器不會跳過具有自身伺服器 ID 的事件。此設定通常僅在罕見的配置中才有用。當在副本伺服器上啟用二進制日誌時,如果伺服器是循環複製拓撲的一部分,則副本伺服器上的
--replicate-same-server-id
和--log-replica-updates
選項的組合可能會導致複製中的無限迴圈。(在 MySQL 8.4 中,預設啟用二進制日誌,當啟用二進制日誌時,預設會記錄副本更新。)但是,全域交易識別符號 (GTID) 可透過跳過已套用的交易來防止這種情況發生。如果在副本伺服器上設定gtid_mode=ON
,您可以使用此選項組合啟動伺服器,但在伺服器執行時,您無法變更為任何其他 GTID 模式。如果設定了任何其他 GTID 模式,則伺服器不會以此選項組合啟動。預設情況下,如果複製 I/O(接收器)執行緒的二進制日誌事件具有副本伺服器的伺服器 ID,則不會將其寫入中繼日誌(此最佳化有助於節省磁碟空間)。如果您想使用
--replicate-same-server-id
,請務必在您讓副本伺服器讀取您希望複製 SQL(套用程式)執行緒執行的自身事件之前,使用此選項啟動副本伺服器。 --replicate-wild-do-table=
db_name.tbl_name
命令列格式 --replicate-wild-do-table=name
類型 字串 透過告知複製 SQL(套用程式)執行緒將複製限制在任何更新的表格符合指定的資料庫和表格名稱模式的語句,來建立複製篩選器。模式可以包含
%
和_
通配符,它們的含義與LIKE
模式比對運算符的含義相同。若要指定多個表格,請多次使用此選項,每個表格一次。這適用於跨資料庫更新。請參閱 第 19.2.5 節,「伺服器如何評估複製篩選規則」。您也可以透過發出CHANGE REPLICATION FILTER REPLICATE_WILD_DO_TABLE
陳述式來建立此類篩選器。此選項支援通道特定的複製篩選器,使多來源副本能夠為不同的來源使用特定的篩選器。若要在名為
channel_1
的通道上設定通道特定的複製篩選器,請使用--replicate-wild-do-table:
。在此情況下,第一個冒號會被視為分隔符號,後續的冒號則為文字冒號。有關詳細資訊,請參閱 第 19.2.5.4 節,「基於複製通道的篩選器」。channel_1
:db_name.tbl_name
重要事項全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。--replicate-wild-do-table
選項指定的複製篩選器適用於表格、檢視和觸發程序。它不適用於預存程序和函式或事件。若要篩選在後者物件上操作的語句,請使用一個或多個--replicate-*-db
選項。例如,
--replicate-wild-do-table=foo%.bar%
只會複製使用資料庫名稱以foo
開頭,且表格名稱以bar
開頭的表格的更新。如果表格名稱模式為
%
,它會符合任何表格名稱,且該選項也適用於資料庫層級語句(CREATE DATABASE
、DROP DATABASE
和ALTER DATABASE
)。例如,如果您使用--replicate-wild-do-table=foo%.%
,如果資料庫名稱符合模式foo%
,則會複製資料庫層級語句。重要事項表格層級複製篩選器僅適用於查詢中明確提及和操作的表格。它們不適用於查詢隱含更新的表格。例如,
GRANT
語句會更新mysql.user
系統表格,但未提及該表格,因此不受指定mysql.%
作為通配符模式的篩選器影響。若要在資料庫或表格名稱模式中包含文字通配符,請使用反斜線逸出它們。例如,若要複製名為
my_own%db
的資料庫的所有表格,但不複製來自my1ownAABCdb
資料庫的表格,您應該像這樣逸出_
和%
字元:--replicate-wild-do-table=my\_own\%db
。如果您在命令列上使用此選項,您可能需要根據您的命令解釋器加倍反斜線或引用選項值。例如,對於 bash Shell,您需要輸入--replicate-wild-do-table=my\\_own\\%db
。--replicate-wild-ignore-table=
db_name.tbl_name
命令列格式 --replicate-wild-ignore-table=name
類型 字串 建立一個複製篩選器,該篩選器會阻止複製 SQL 執行緒複製任何表格符合指定通配符模式的語句。若要指定多個要忽略的表格,請多次使用此選項,每個表格一次。這適用於跨資料庫更新。請參閱 第 19.2.5 節,「伺服器如何評估複製篩選規則」。您也可以透過發出
CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE
陳述式來建立此類篩選器。此選項支援通道特定的複製篩選器,使多來源副本能夠為不同的來源使用特定的篩選器。若要在名為
channel_1
的通道上設定通道特定的複製篩選器,請使用--replicate-wild-ignore:
。在此情況下,第一個冒號會被視為分隔符號,後續的冒號則為文字冒號。有關詳細資訊,請參閱 第 19.2.5.4 節,「基於複製通道的篩選器」。channel_1
:db_name.tbl_name
重要事項全域複寫篩選器無法在設定為群組複寫的 MySQL 伺服器執行個體上使用,因為在某些伺服器上篩選交易會使群組無法針對一致狀態達成協議。通道特定的複寫篩選器可用於與群組複寫沒有直接關聯的複寫通道,例如群組成員也充當群組外部來源的複本的情況。它們不能用於
group_replication_applier
或group_replication_recovery
通道。例如,
--replicate-wild-ignore-table=foo%.bar%
不會複製使用資料庫名稱以foo
開頭,且表格名稱以bar
開頭的表格的更新。有關比對如何運作的資訊,請參閱--replicate-wild-do-table
選項的說明。在選項值中包含文字通配符的規則與--replicate-wild-ignore-table
的規則相同。重要事項表格層級複製篩選器僅適用於查詢中明確提及和操作的表格。它們不適用於查詢隱含更新的表格。例如,
GRANT
語句會更新mysql.user
系統表格,但未提及該表格,因此不受指定mysql.%
作為通配符模式的篩選器影響。如果您需要篩選掉
GRANT
語句或其他管理語句,一種可能的解決方法是使用--replicate-ignore-db
篩選器。此篩選器會根據USE
語句所決定的目前生效的預設資料庫來運作。因此,您可以建立一個篩選器來忽略未複製的資料庫的語句,然後立即發出USE
語句,將預設資料庫切換到該資料庫,然後再發出任何您想要忽略的管理語句。在管理語句中,命名該語句套用的實際資料庫。例如,如果在副本伺服器上設定
--replicate-ignore-db=nonreplicated
,則以下語句序列會導致忽略GRANT
語句,因為預設資料庫nonreplicated
處於作用中USE nonreplicated; GRANT SELECT, INSERT ON replicated.t1 TO 'someuser'@'somehost';
-
命令列格式 --skip-replica-start[={OFF|ON}]
系統變數 skip_replica_start
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
--skip-replica-start
會告知副本伺服器在伺服器啟動時不要啟動複製 I/O(接收器)和 SQL(套用程式)執行緒。若要稍後啟動執行緒,請使用START REPLICA
陳述式。您可以使用
skip_replica_start
系統變數來取代命令列選項,以允許使用 MySQL 伺服器的權限結構來存取此功能,以便資料庫管理員不需要任何作業系統的特殊存取權限。 -
命令列格式 --skip-slave-start[={OFF|ON}]
已棄用 是 系統變數 skip_slave_start
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
已棄用的
--skip-replica-start
別名。 --slave-skip-errors=[
err_code1
,err_code2
,...|all|ddl_exist_errors]命令列格式 --slave-skip-errors=name
已棄用 是 系統變數 slave_skip_errors
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 預設值 OFF
有效值 OFF
[錯誤代碼清單]
all
ddl_exist_errors
已棄用的
--replica-skip-errors
同義詞。--slave-sql-verify-checksum={0|1}
命令列格式 --slave-sql-verify-checksum[={OFF|ON}]
類型 布林值 預設值 ON
已棄用的
--replica-sql-verify-checksum
同義詞
以下清單說明用於控制副本伺服器的系統變數。它們可以在伺服器啟動時設定,並且其中一些可以使用 SET
在執行期間變更。本節稍早列出了與副本一起使用的伺服器選項。
-
命令列格式 --init-replica=name
系統變數 init_replica
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 字串 init_replica
類似於init_connect
,但它是一個字串,每次複製 SQL 執行緒啟動時都會由副本伺服器執行。字串的格式與init_connect
變數的格式相同。此變數的設定會對後續的START REPLICA
陳述式生效。注意複製 SQL 執行緒會在執行
init_replica
之前,先向客戶端傳送確認訊息。因此,無法保證在START REPLICA
返回時,init_replica
已執行。請參閱 章節 15.4.2.4,「START REPLICA 陳述式」 以取得更多資訊。 -
命令列格式 --init-slave=name
已棄用 是 系統變數 init_slave
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 字串 init_replica
的已棄用別名。 -
命令列格式 --log-slow-replica-statements[={OFF|ON}]
系統變數 log_slow_replica_statements
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
啟用慢查詢日誌時,
log_slow_replica_statements
會啟用在複本上執行時間超過long_query_time
秒的查詢記錄。請注意,如果正在使用以列為基礎的複寫 (binlog_format=ROW
),則log_slow_replica_statements
無效。只有在二進位日誌中以陳述式格式記錄查詢時,才會將查詢新增至複本的慢查詢日誌,也就是說,當設定binlog_format=STATEMENT
時,或是當設定binlog_format=MIXED
且陳述式以陳述式格式記錄時。當設定binlog_format=MIXED
時,以列格式記錄的慢查詢,或者當設定binlog_format=ROW
時記錄的慢查詢,即使啟用log_slow_replica_statements
,也不會新增至複本的慢查詢日誌。設定
log_slow_replica_statements
不會立即生效。變數的狀態適用於所有後續的START REPLICA
陳述式。另請注意,long_query_time
的全域設定適用於 SQL 執行緒的整個生命週期。如果您變更該設定,您必須停止並重新啟動複製 SQL 執行緒,才能在那裡實作變更 (例如,透過發出STOP REPLICA
和START REPLICA
陳述式,並使用SQL_THREAD
選項)。 -
命令列格式 --log-slow-slave-statements[={OFF|ON}]
已棄用 是 系統變數 log_slow_slave_statements
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
log_slow_replica_statements
的已棄用別名。 -
命令列格式 --max-relay-log-size=#
系統變數 max_relay_log_size
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 1073741824
單位 位元組 區塊大小 4096
如果複本寫入其轉送日誌,導致目前的日誌檔案大小超過此變數的值,則複本會旋轉轉送日誌 (關閉目前的檔案並開啟下一個檔案)。如果
max_relay_log_size
為 0,伺服器會對二進位日誌和轉送日誌使用max_binlog_size
。如果max_relay_log_size
大於 0,它會限制轉送日誌的大小,讓您可以針對兩個日誌設定不同的大小。您必須將max_relay_log_size
設定為 4096 個位元組到 1GB (含) 之間,或設定為 0。預設值為 0。請參閱 章節 19.2.3,「複製執行緒」。 -
轉送日誌檔案的基底名稱。對於預設的複製通道,轉送日誌的預設基底名稱為
。對於非預設的複製通道,轉送日誌的預設基底名稱為主機名稱
-relay-bin
,其中主機名稱
-relay-bin-通道
通道
是記錄在此轉送日誌中的複製通道名稱。伺服器會在資料目錄中寫入檔案,除非基底名稱的前面加上絕對路徑名稱以指定不同的目錄。伺服器會透過在基底名稱中加上數值後綴,依序建立轉送日誌檔案。
複製伺服器上的轉送日誌和轉送日誌索引,不能給予與二進位日誌和二進位日誌索引相同的名稱,後兩者的名稱是由
--log-bin
和--log-bin-index
選項所指定。如果二進位日誌和轉送日誌檔案的基底名稱相同,則伺服器會發出錯誤訊息,且不會啟動。由於 MySQL 剖析伺服器選項的方式,如果您在伺服器啟動時指定此變數,則必須提供值;只有在實際未指定選項時,才會使用預設的基底名稱。如果您在伺服器啟動時指定
relay_log
系統變數,但未指定值,則可能會產生非預期的行為;此行為取決於使用的其他選項、指定選項的順序,以及選項是在命令列中指定還是在選項檔案中指定。如需有關 MySQL 如何處理伺服器選項的更多資訊,請參閱 章節 6.2.2,「指定程式選項」。如果您指定此變數,指定的值也會用作轉送日誌索引檔案的基底名稱。您可以使用
relay_log_index
系統變數,指定不同的轉送日誌索引檔案基底名稱,來覆寫此行為。當伺服器從索引檔案讀取項目時,它會檢查項目是否包含相對路徑。如果包含,則路徑的相對部分會取代為使用
relay_log
系統變數設定的絕對路徑。絕對路徑會保持不變;在這種情況下,必須手動編輯索引,才能啟用新的路徑或要使用的路徑。您可能會發現
relay_log
系統變數在執行以下工作中很有用建立名稱與主機名稱無關的轉送日誌。
如果您需要將轉送日誌放在資料目錄以外的區域,因為您的轉送日誌往往非常大,而且您不想縮減
max_relay_log_size
。透過使用磁碟之間的負載平衡來提高速度。
您可以從
relay_log_basename
系統變數取得轉送日誌檔案名稱 (和路徑)。 -
系統變數 relay_log_basename
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 檔案名稱 預設值 datadir + '/' + 主機名稱 + '-relay-bin'
保留轉送日誌檔案的基底名稱和完整路徑。最大變數長度為 256。此變數由伺服器設定,且為唯讀。
-
命令列格式 --relay-log-index=file_name
系統變數 relay_log_index
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 檔案名稱 預設值 *主機名稱*-relay-bin.index
轉送日誌索引檔案的名稱。最大變數長度為 256。如果您未指定此變數,但指定了
relay_log
系統變數,則其值會用作轉送日誌索引檔案的預設基底名稱。如果也未指定relay_log
,則對於預設的複製通道,預設名稱為
,並使用主機的名稱。對於非預設的複製通道,預設名稱為主機名稱
-relay-bin.index
,其中主機名稱
-relay-bin-通道
.index通道
是記錄在此轉送日誌索引中的複製通道名稱。轉送日誌檔案的預設位置是資料目錄,或使用
relay_log
系統變數指定的任何其他位置。您可以透過在基底名稱中加入前置的絕對路徑名稱以指定不同的目錄,來使用relay_log_index
系統變數指定替代位置。複製伺服器上的轉送日誌和轉送日誌索引,不能給予與二進位日誌和二進位日誌索引相同的名稱,後兩者的名稱是由
--log-bin
和--log-bin-index
選項所指定。如果二進位日誌和轉送日誌檔案的基底名稱相同,則伺服器會發出錯誤訊息,且不會啟動。由於 MySQL 剖析伺服器選項的方式,如果您在伺服器啟動時指定此變數,則必須提供值;只有在實際未指定選項時,才會使用預設的基底名稱。如果您在伺服器啟動時指定
relay_log_index
系統變數,但未指定值,則可能會產生非預期的行為;此行為取決於使用的其他選項、指定選項的順序,以及選項是在命令列中指定還是在選項檔案中指定。如需有關 MySQL 如何處理伺服器選項的更多資訊,請參閱 章節 6.2.2,「指定程式選項」。 -
命令列格式 --relay-log-purge[={OFF|ON}]
系統變數 relay_log_purge
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
停用或啟用轉送日誌檔案在不再需要時的自動清除。預設值為 1 (
ON
)。 -
命令列格式 --relay-log-recovery[={OFF|ON}]
系統變數 relay_log_recovery
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
如果啟用,此變數會啟用在伺服器啟動後立即自動復原轉送日誌。復原程序會建立新的轉送日誌檔案,將 SQL (應用程式) 執行緒位置初始化為此新的轉送日誌,並將 I/O (接收器) 執行緒初始化為應用程式執行緒位置。然後繼續從來源讀取轉送日誌。如果使用
CHANGE REPLICATION SOURCE TO
陳述式,針對複製通道設定了SOURCE_AUTO_POSITION=1
,則用於啟動複寫的來源位置可能是連線中接收到的位置,而不是在此程序中指派的位置。當停用
relay_log_recovery
時,伺服器會在啟動時清理轉送日誌,方法是執行以下動作移除日誌結尾處任何未完成的交易
移除任何僅包含未完成交易部分的轉送日誌檔案
從轉送日誌索引檔案中移除任何已移除之轉送日誌檔案的參考
當從轉送日誌取得有效的來源位置和來源檔案名稱時,更新接收器執行緒的位置以符合此檔案和位置;否則,更新接收器執行緒的位置以符合應用程式的位置
這個全域變數在執行時為唯讀。其值可以在副本伺服器啟動時使用
--relay-log-recovery
選項設定。此選項應在副本發生意外停止後使用,以確保不會處理任何可能損壞的中繼日誌,並且必須使用此選項以保證副本的崩潰安全。預設值為 0 (停用)。有關副本上最能抵抗意外停止的設定組合的資訊,請參閱第 19.4.2 節, 「處理副本意外停止」。對於多執行緒副本(其中
replica_parallel_workers
大於 0),在啟動時設定--relay-log-recovery
會自動處理從中繼日誌執行的交易序列中的任何不一致和間隙。當使用基於檔案位置的複寫時,可能會發生這些間隙。(有關更多詳細資訊,請參閱第 19.5.1.34 節,「複寫和交易不一致」。)中繼日誌恢復過程使用與START REPLICA UNTIL SQL_AFTER_MTS_GAPS
陳述式相同的方法處理間隙。當副本達到一致的無間隙狀態時,中繼日誌恢復過程會繼續從來源擷取後續的交易,並從 SQL (applier) 執行緒位置開始。當使用基於 GTID 的複寫時,多執行緒副本會先檢查SOURCE_AUTO_POSITION
是否設定為ON
,如果是,則會省略計算應該跳過或不應跳過的交易的步驟,以便恢復過程不需要舊的中繼日誌。注意此變數不會影響下列群組複寫通道
group_replication_applier
group_replication_recovery
群組上執行的任何其他通道都會受到影響,例如從外部來源或其他群組複寫的通道。
-
命令列格式 --relay-log-space-limit=#
系統變數 relay_log_space_limit
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 18446744073709551615
單位 位元組 所有中繼日誌可使用的最大空間量。
-
命令列格式 --replica-checkpoint-group=#
系統變數 replica_checkpoint_group
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 512
最小值 32
最大值 524280
區塊大小 8
replica_checkpoint_group
設定多執行緒副本在呼叫檢查點操作以更新其狀態之前可以處理的最大交易數,如SHOW REPLICA STATUS
所示。設定此變數對未啟用多執行緒的副本沒有影響。設定此變數沒有立即的影響。變數的狀態適用於所有後續的START REPLICA
陳述式。此變數與
replica_checkpoint_period
系統變數結合使用,當超過任一限制時,將執行檢查點,並重設追蹤交易數量和自上次檢查點以來經過時間的計數器。除非伺服器是使用
-DWITH_DEBUG
建置的,否則此變數允許的最小值為 32,在這種情況下,最小值為 1。有效值始終是 8 的倍數;您可以將其設定為非倍數的值,但伺服器會在儲存值之前將其向下捨入到下一個較低的 8 的倍數。(例外:除錯伺服器不會執行此類捨入。)無論伺服器是如何建置的,預設值都是 512,允許的最大值為 524280。 -
命令列格式 --replica-checkpoint-period=#
系統變數 replica_checkpoint_period
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 300
最小值 1
最大值 4294967295
單位 毫秒 replica_checkpoint_period
設定在呼叫檢查點操作以更新多執行緒副本狀態(如SHOW REPLICA STATUS
所示)之前允許經過的最大時間(以毫秒為單位)。設定此變數對未啟用多執行緒的副本沒有影響。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。此變數與
replica_checkpoint_group
系統變數結合使用,當超過任一限制時,將執行檢查點,並重設追蹤交易數量和自上次檢查點以來經過時間的計數器。除非伺服器是使用
-DWITH_DEBUG
建置的,否則此變數允許的最小值為 1,在這種情況下,最小值為 0。無論伺服器是如何建置的,預設值都是 300 毫秒,可能的最大值是 4294967295 毫秒(大約 49.7 天)。 -
命令列格式 --replica-compressed-protocol[={OFF|ON}]
系統變數 replica_compressed_protocol
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
replica_compressed_protocol
指定如果來源和副本都支援,是否要使用來源/副本連線協定的壓縮。如果此變數已停用(預設值),則連線不會壓縮。對此變數的變更會在後續的連線嘗試時生效;這包括發出START REPLICA
陳述式之後,以及正在執行的複寫 I/O (接收器) 執行緒所建立的重新連線。二進位日誌交易壓縮(由
binlog_transaction_compression
系統變數啟用)也可以用於節省頻寬。如果您將二進位日誌交易壓縮與協定壓縮結合使用,則協定壓縮對資料起作用的機會較少,但仍然可以壓縮標頭以及未壓縮的事件和交易酬載。有關二進位日誌交易壓縮的更多資訊,請參閱第 7.4.4.5 節,「二進位日誌交易壓縮」。如果啟用
replica_compressed_protocol
,則它優先於為CHANGE REPLICATION SOURCE TO
陳述式指定的任何SOURCE_COMPRESSION_ALGORITHMS
選項。在這種情況下,如果來源和副本都支援該演算法,則與來源的連線會使用zlib
壓縮。如果停用replica_compressed_protocol
,則會套用SOURCE_COMPRESSION_ALGORITHMS
的值。有關更多資訊,請參閱第 6.2.8 節,「連線壓縮控制」。 -
命令列格式 --replica-exec-mode=mode
系統變數 replica_exec_mode
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 列舉 預設值 IDEMPOTENT
(NDB)STRICT
(其他)有效值 STRICT
IDEMPOTENT
replica_exec_mode
控制複寫執行緒如何在複寫期間解決衝突和錯誤。IDEMPOTENT
模式會抑制重複鍵和找不到鍵的錯誤;STRICT
表示不會發生此類抑制。IDEMPOTENT
模式旨在用於多來源複寫、循環複寫和 NDB Cluster 複寫的一些其他特殊複寫場景。(有關更多資訊,請參閱第 25.7.10 節,「NDB Cluster 複寫:雙向和循環複寫」,以及第 25.7.12 節,「NDB Cluster 複寫衝突解決」。)NDB Cluster 會忽略為replica_exec_mode
明確設定的任何值,並始終將其視為IDEMPOTENT
。在 MySQL Server 8.4 中,
STRICT
模式是預設值。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。
對於
NDB
以外的儲存引擎,IDEMPOTENT
模式僅應在您絕對確定可以安全地忽略重複鍵錯誤和找不到鍵的錯誤時使用。它旨在用於 NDB Cluster 的容錯移轉場景,其中採用了多來源複寫或循環複寫,不建議在其他情況下使用。 -
命令列格式 --replica-load-tmpdir=dir_name
系統變數 replica_load_tmpdir
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 目錄名稱 預設值 --tmpdir 的值
replica_load_tmpdir
指定副本建立暫存檔案的目錄名稱。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。預設情況下,此變數值等於tmpdir
系統變數的值,或在未指定該系統變數時套用的預設值。當複寫 SQL 執行緒複寫
LOAD DATA
陳述式時,它會將要載入的檔案從中繼日誌擷取到暫存檔案中,然後將這些暫存檔案載入到表格中。如果在來源上載入的檔案很大,則副本上的暫存檔案也會很大。因此,建議使用此選項來告知副本將暫存檔案放在具有大量可用空間的檔案系統中的目錄中。在這種情況下,中繼日誌也很大,因此您可能還想設定relay_log
系統變數,以將中繼日誌放在該檔案系統中。此選項指定的目錄應位於基於磁碟的檔案系統中(而不是基於記憶體的檔案系統),以便用於複寫
LOAD DATA
陳述式的暫存檔案可以在機器重新啟動後仍然存在。該目錄也不應該是在系統啟動過程中被作業系統清除的目錄。但是,如果已移除暫存檔案,複寫現在可以在重新啟動後繼續。 -
命令列格式 --replica-max-allowed-packet=#
系統變數 replica_max_allowed_packet
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 1073741824
最小值 1024
最大值 1073741824
單位 位元組 區塊大小 1024
replica_max_allowed_packet
設定複製 SQL (applier) 和 I/O (receiver) 線程可以處理的最大封包大小 (以位元組為單位)。設定此變數會立即對所有複製通道生效,包括正在執行的通道。當加入事件標頭後,來源端寫入的二進制日誌事件可能比其max_allowed_packet
設定值還長。replica_max_allowed_packet
的設定值必須大於來源端的max_allowed_packet
設定值,這樣使用基於列的複製進行大型更新時才不會導致複製失敗。此全域變數的值始終為 1024 的正整數倍;如果您將其設定為其他值,則該值會向下捨入為最接近的 1024 的較大倍數,以便儲存或使用;將
replica_max_allowed_packet
設定為 0 會導致使用 1024。(在所有此類情況下都會發出截斷警告。)預設值和最大值為 1073741824 (1 GB);最小值為 1024。 -
命令列格式 --replica-net-timeout=#
系統變數 replica_net_timeout
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 60
最小值 1
最大值 31536000
單位 秒 replica_net_timeout
指定在副本認為連線中斷、中止讀取並嘗試重新連線之前,等待來自來源端更多資料或心跳訊號的秒數。設定此變數不會立即生效。此變數的狀態會套用至所有後續的START REPLICA
命令。預設值為 60 秒(一分鐘)。第一次重試會在逾時後立即發生。重試之間的間隔由
CHANGE REPLICATION SOURCE TO
陳述式的SOURCE_CONNECT_RETRY
選項控制,而重新連線嘗試次數受SOURCE_RETRY_COUNT
選項限制。如果連線仍然良好,則心跳間隔會阻止在沒有資料的情況下發生連線逾時,心跳間隔由
CHANGE REPLICATION SOURCE TO
陳述式的SOURCE_HEARTBEAT_PERIOD
選項控制。心跳間隔預設為replica_net_timeout
值的一半,並記錄在副本的連線中繼資料存放區中,並顯示在replication_connection_configuration
Performance Schema 表格中。請注意,變更replica_net_timeout
的值或預設設定不會自動變更心跳間隔,無論心跳間隔是已明確設定還是使用先前計算的預設值。如果變更連線逾時時間,您也必須發出CHANGE REPLICATION SOURCE TO
以將心跳間隔調整為適當的值,使其在連線逾時之前發生。 -
命令列格式 --replica-parallel-type=值
已棄用 是 系統變數 replica_parallel_type
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 列舉 預設值 LOGICAL_CLOCK
有效值 DATABASE
LOGICAL_CLOCK
對於多線程副本(在
replica_parallel_workers
設定為大於 0 的值的副本),replica_parallel_type
指定用於決定哪些交易允許在副本上並行執行的策略。此變數對未啟用多線程的副本沒有影響。可能的值為LOGICAL_CLOCK
:交易在副本上並行套用,基於複製來源寫入二進制日誌的時間戳記。交易之間的相依性會根據它們的時間戳記進行追蹤,以便在可能的情況下提供額外的平行化。DATABASE
:更新不同資料庫的交易會並行套用。此值僅適用於將資料分割到多個資料庫,這些資料庫在來源端獨立且同時更新的情況。不得有跨資料庫限制,因為此類限制可能會在副本上被違反。
當啟用
replica_preserve_commit_order
時,您必須使用LOGICAL_CLOCK
。依預設會為副本伺服器啟用多線程(預設為replica_parallel_workers=4
),且LOGICAL_CLOCK
是預設值。(replica_preserve_commit_order
依預設也會啟用。)當複製拓樸使用多個層級的副本時,對於距離來源端較遠的每個層級,
LOGICAL_CLOCK
每個層級可能實現較少的平行化。當使用
binlog_transaction_compression
系統變數啟用二進制日誌交易壓縮時,如果將replica_parallel_type
設定為DATABASE
,則在排定交易之前會先對交易影響的所有資料庫進行對應。與每個事件對應和排程的未壓縮交易相比,將二進制日誌交易壓縮與DATABASE
策略搭配使用可能會降低平行化程度。replica_parallel_type
已被棄用,並且不支援使用資料庫分割來平行化交易。預計在未來的版本中將會移除對這些項目的支援,並且之後將會獨家使用LOGICAL_CLOCK
。 -
命令列格式 --replica-parallel-workers=#
系統變數 replica_parallel_workers
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 4
最小值 0
最大值 1024
replica_parallel_workers
啟用副本上的多線程,並設定用於並行執行複製交易的 applier 線程數。當值大於或等於 1 時,副本會使用指定數量的 worker 線程來執行交易,外加一個協調器線程,該線程從中繼日誌讀取交易並將其排程到 worker 線程。當值為 0 時,只有一個線程會循序讀取和套用交易。如果您使用多個複製通道,則此變數的值會套用到每個通道使用的線程。預設值為 4,這表示副本依預設為多線程。
將此變數設定為 0 已被棄用,會發出警告,並可能會在未來的 MySQL 版本中移除。對於單一 worker,請改為將
replica_parallel_workers
設定為 1。當
replica_preserve_commit_order
為ON
(預設值)時,副本上的交易會以與它們在副本的中繼日誌中出現的相同順序在副本上外部化。交易在 applier 線程之間的分配方式由replica_parallel_type
決定。這些系統變數也具有適用於多線程的預設值。若要停用平行執行,請將
replica_parallel_workers
設定為 1,在這種情況下,副本會使用一個讀取交易的協調器線程和一個套用交易的 worker 線程,這表示交易會依序套用。當replica_parallel_workers
等於 1 時,replica_parallel_type
和replica_preserve_commit_order
系統變數沒有影響並會被忽略。如果replica_parallel_workers
等於 0,同時啟用CHANGE REPLICATION SOURCE TO
選項GTID_ONLY
,則副本會擁有一個協調器線程和一個 worker 線程,就像將replica_parallel_workers
設定為 1 一樣。使用一個平行 worker 時,replica_preserve_commit_order
系統變數也沒有影響。設定
replica_parallel_workers
不會立即生效,而是會套用至所有後續的START REPLICA
陳述式。NDB Cluster 8.4 也支援多線程副本。如需更多資訊,請參閱 Section 25.7.11, “使用多線程 Applier 的 NDB Cluster 複製”。
增加 worker 數量會提高平行化的潛力。一般來說,這會將效能提高到一定程度,超過該程度後,增加 worker 數量會由於鎖定爭用等並行效應而降低效能。理想的數量取決於硬體和工作負載;這很難預測,通常必須透過測試才能找出。沒有主索引鍵的表格(始終會損害效能)可能會對
replica_parallel_workers
> 1 的副本產生更大的負面效能影響;因此,請務必在啟用此選項之前,讓所有表格都具有主索引鍵。 -
命令列格式 --replica-pending-jobs-size-max=#
系統變數 replica_pending_jobs_size_max
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 128M
最小值 1024
最大值 16EiB
單位 位元組 區塊大小 1024
對於多線程副本,此變數設定 applier 佇列可用的最大記憶體量(以位元組為單位),這些佇列保留尚未套用的事件。設定此變數對未啟用多線程的副本沒有影響。設定此變數不會立即生效。此變數的狀態會套用至所有後續的
START REPLICA
命令。此變數的最小值為 1024 位元組;預設值為 128MB。最大可能值為 18446744073709551615 (16 exbibytes)。在儲存之前,不是 1024 位元組的精確倍數的值會向下捨入至下一個較低的 1024 位元組的倍數。
此變數的值為軟限制,可以設定為與正常工作負載相符。如果異常大的事件超過此大小,則會保留該交易,直到所有 worker 線程都有空的佇列,然後才會處理。在完成大型交易之前,會保留所有後續交易。
-
命令列格式 --replica-preserve-commit-order[={OFF|ON}]
系統變數 replica_preserve_commit_order
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
對於多執行緒的副本(設定
replica_parallel_workers
的值大於 0 的副本),設定replica_preserve_commit_order=ON
可確保交易在副本上的執行和提交順序,與它們在副本的中繼日誌中出現的順序相同。這可以防止已從副本中繼日誌執行的交易序列中出現間隙,並在副本上保留與來源相同的交易歷史記錄(具有以下列出的限制)。此變數對於未啟用多執行緒的副本沒有影響。在 MySQL 8.4 中,副本伺服器預設啟用多執行緒(預設
replica_parallel_workers=4
),因此replica_preserve_commit_order=ON
是預設值,且replica_parallel_type=LOGICAL_CLOCK
也是預設值。此外,如果replica_parallel_workers
設定為 1,則會忽略replica_preserve_commit_order
的設定,因為在該情況下,交易的順序無論如何都會被保留。設定
replica_preserve_commit_order=ON
不需要副本上的二進制日誌記錄和副本更新日誌記錄,如果需要,可以將其停用。設定replica_preserve_commit_order=ON
需要將replica_parallel_type
設定為LOGICAL_CLOCK
,這是 MySQL 8.4 中的預設值。在變更replica_preserve_commit_order
和replica_parallel_type
的值之前,必須停止複寫 SQL 執行緒(如果您使用多個複寫通道,則必須停止所有複寫通道)。當設定
replica_preserve_commit_order=OFF
時,多執行緒副本平行套用的交易可能會以亂序提交。因此,檢查最近執行的交易並不能保證來源的所有先前交易都已在副本上執行。從副本的中繼日誌執行的交易序列中有可能出現間隙。當使用多執行緒副本時,這會對記錄和復原產生影響。請參閱 第 19.5.1.34 節「複寫和交易不一致性」以取得更多資訊。當設定
replica_preserve_commit_order=ON
時,執行中的工作執行緒會等到所有先前的交易都提交之後才提交。當某個執行緒正在等待其他工作執行緒提交其交易時,它會將其狀態回報為等待先前交易提交
。使用此模式,多執行緒副本永遠不會進入來源未處於的狀態。這支援使用複寫進行讀取擴展。請參閱 第 19.4.5 節「使用複寫進行擴展」。注意replica_preserve_commit_order=ON
不會阻止來源二進制日誌位置延遲,其中Exec_master_log_pos
落後於已執行交易的位置。請參閱 第 19.5.1.34 節「複寫和交易不一致性」。如果副本在其二進制日誌上使用篩選器,例如
--binlog-do-db
,則replica_preserve_commit_order=ON
不會保留提交順序和交易歷史記錄。replica_preserve_commit_order=ON
不會保留非交易性 DML 更新的順序。這些更新可能會在它們在中繼日誌中之前的交易之前提交,這可能會導致已從副本的中繼日誌執行的交易序列中出現間隙。如果使用基於語句的複寫,且交易性和非交易性儲存引擎都參與在來源上回滾的非 XA 交易中,則可能會發生在副本上保留提交順序的限制。通常,在來源上回滾的非 XA 交易不會複寫到副本,但在這種特殊情況下,交易可能會複寫到副本。如果確實發生這種情況,則沒有二進制日誌記錄的多執行緒副本不會處理交易回滾,因此在這種情況下,副本上的提交順序會與交易的中繼日誌順序不同。
-
命令列格式 --replica-sql-verify-checksum[={OFF|ON}]
系統變數 replica_sql_verify_checksum
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
replica_sql_verify_checksum
會導致複寫 SQL(套用程式)執行緒使用從中繼日誌讀取的檢查總和來驗證資料。如果出現不符,副本會停止並顯示錯誤。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。注意當從網路上接收事件時,如果可能,複寫 I/O(接收器)執行緒始終會讀取檢查總和。
-
命令列格式 --replica-transaction-retries=#
系統變數 replica_transaction_retries
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10
最小值 0
最大值 18446744073709551615
replica_transaction_retries
設定單執行緒或多執行緒副本上複寫 SQL 執行緒在停止前自動重試失敗交易的最大次數。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。預設值為 10。將變數設定為 0 會停用交易的自動重試。如果複寫 SQL 執行緒因
InnoDB
死鎖或因為交易的執行時間超過InnoDB
的innodb_lock_wait_timeout
或NDB
的TransactionDeadlockDetectionTimeout
或TransactionInactiveTimeout
而無法執行交易,則它會自動重試replica_transaction_retries
次,然後停止並顯示錯誤。不會重試具有非暫時性錯誤的交易。效能架構表
replication_applier_status
會在COUNT_TRANSACTIONS_RETRIES
資料行中顯示每個複寫通道發生的重試次數。效能架構表replication_applier_status_by_worker
會顯示有關單執行緒或多執行緒副本上各個套用程式執行緒的交易重試詳細資訊,並識別導致重試最後一次交易和目前正在進行的交易的錯誤。 -
命令列格式 --replica-type-conversions=set
系統變數 replica_type_conversions
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 設定 預設值 有效值 ALL_LOSSY
ALL_NON_LOSSY
ALL_SIGNED
ALL_UNSIGNED
replica_type_conversions
控制在使用基於列的複寫時,副本上生效的類型轉換模式。其值是來自清單的零個或多個元素以逗號分隔的集合:ALL_LOSSY
、ALL_NON_LOSSY
、ALL_SIGNED
、ALL_UNSIGNED
。將此變數設定為空字串可禁止來源和副本之間的類型轉換。設定此變數會立即對所有複寫通道生效,包括正在執行的通道。有關適用於基於列的複寫中屬性升級和降級的類型轉換模式的其他資訊,請參閱 基於列的複寫:屬性升級和降級。
replication_optimize_for_static_plugin_config
命令列格式 --replication-optimize-for-static-plugin-config[={OFF|ON}]
系統變數 replication_optimize_for_static_plugin_config
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
使用共用鎖定,並避免不必要的鎖定取得,以改善半同步複寫的效能。此設定和
replication_sender_observe_commit_only
隨著副本數量的增加而有所幫助,因為鎖定的競爭會降低效能。當啟用此系統變數時,無法解除安裝半同步複寫外掛程式,因此您必須先停用系統變數,然後才能完成解除安裝。可以在安裝半同步複寫外掛程式之前或之後啟用此系統變數,並且可以在複寫執行時啟用。半同步複寫來源伺服器也可以從啟用此系統變數中獲得效能優勢,因為它們使用與副本相同的鎖定機制。
當伺服器上使用群組複寫時,可以啟用
replication_optimize_for_static_plugin_config
。在這種情況下,當由於高工作負載而導致鎖定競爭時,它可能會提升效能。replication_sender_observe_commit_only
命令列格式 --replication-sender-observe-commit-only[={OFF|ON}]
系統變數 replication_sender_observe_commit_only
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
限制回調以提升半同步複製的效能。這個設定和
replication_optimize_for_static_plugin_config
在副本數量增加時有所幫助,因為鎖的爭用可能會拖慢效能。可以在安裝半同步複寫外掛程式之前或之後啟用此系統變數,並且可以在複寫執行時啟用。半同步複寫來源伺服器也可以從啟用此系統變數中獲得效能優勢,因為它們使用與副本相同的鎖定機制。
-
命令列格式 --report-host=主機名稱
系統變數 report_host
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 在副本註冊期間要回報給來源的主機名稱或 IP 位址。這個值會出現在來源伺服器上
SHOW REPLICAS
的輸出中。如果您不希望副本向來源註冊,請將該值設定為未設定。注意來源伺服器僅從副本伺服器連線後的 TCP/IP socket 讀取 IP 位址是不夠的。由於 NAT 和其他路由問題,該 IP 可能對從來源或其他主機連線到副本無效。
-
命令列格式 --report-password=名稱
系統變數 report_password
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 在副本註冊期間要回報給來源的副本帳戶密碼。如果來源伺服器是以
--show-replica-auth-info
啟動的,則此值會出現在來源伺服器上SHOW REPLICAS
的輸出中。儘管此變數的名稱可能暗示其他意思,
report_password
並未與 MySQL 使用者權限系統相關聯,因此不一定(甚至不太可能)與 MySQL 複製使用者帳戶的密碼相同。 -
命令列格式 --report-port=埠號
系統變數 report_port
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 整數 預設值 [slave_port]
最小值 0
最大值 65535
用於連線到副本的 TCP/IP 埠號,在副本註冊期間要回報給來源。僅當副本監聽非預設埠,或您有從來源或其他用戶端到副本的特殊通道時才設定此選項。如果您不確定,請勿使用此選項。
此選項的預設值是副本實際使用的埠號。這也是
SHOW REPLICAS
顯示的預設值。 -
命令列格式 --report-user=名稱
系統變數 report_user
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 在副本註冊期間要回報給來源的副本帳戶使用者名稱。如果來源伺服器是以
--show-replica-auth-info
啟動的,則此值會出現在來源伺服器上SHOW REPLICAS
的輸出中。儘管此變數的名稱可能暗示其他意思,
report_user
並未與 MySQL 使用者權限系統相關聯,因此不一定(甚至不太可能)與 MySQL 複製使用者帳戶的名稱相同。 -
命令列格式 --rpl-read-size=#
系統變數 rpl_read_size
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 8192
最小值 8192
最大值 4294959104
單位 位元組 區塊大小 8192
rpl_read_size
系統變數控制從二進制日誌檔和中繼日誌檔讀取的最小資料量(以位元組為單位)。如果這些檔案的大量磁碟 I/O 活動阻礙了資料庫的效能,則在作業系統目前未快取檔案資料時,增加讀取大小可能會減少檔案讀取和 I/O 停頓。rpl_read_size
的最小值和預設值為 8192 位元組。該值必須是 4KB 的倍數。請注意,對於每個從二進制日誌和中繼日誌檔案讀取的執行緒,都會分配此值大小的緩衝區,包括來源上的轉儲執行緒和副本上的協調器執行緒。因此,設定較大的值可能會影響伺服器的記憶體消耗。 -
命令列格式 --rpl-semi-sync-replica-enabled[={OFF|ON}]
系統變數 rpl_semi_sync_replica_enabled
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
rpl_semi_sync_replica_enabled
控制是否在副本伺服器上啟用半同步複製。若要啟用或停用外掛程式,請分別將此變數設定為ON
或OFF
(或 1 或 0)。預設值為OFF
。只有在安裝了副本端的半同步複製外掛程式時,此變數才可用。
rpl_semi_sync_replica_trace_level
命令列格式 --rpl-semi-sync-replica-trace-level=#
系統變數 rpl_semi_sync_replica_trace_level
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 32
最小值 0
最大值 4294967295
rpl_semi_sync_replica_trace_level
控制副本伺服器上的半同步複製偵錯追蹤層級。請參閱rpl_semi_sync_master_trace_level
以了解允許的值。只有在安裝了副本端的半同步複製外掛程式時,此變數才可用。
-
命令列格式 --rpl-semi-sync-slave-enabled[={OFF|ON}]
系統變數 rpl_semi_sync_slave_enabled
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
已棄用的
rpl_semi_sync_replica_enabled
同義詞。 rpl_semi_sync_slave_trace_level
命令列格式 --rpl-semi-sync-slave-trace-level=#
系統變數 rpl_semi_sync_slave_trace_level
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 32
最小值 0
最大值 4294967295
已棄用的
rpl_semi_sync_replica_trace_level
同義詞。-
命令列格式 --rpl-stop-replica-timeout=#
系統變數 rpl_stop_replica_timeout
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 31536000
最小值 2
最大值 31536000
單位 秒 您可以透過設定此變數來控制
STOP REPLICA
在逾時之前等待的時間長度(以秒為單位)。這可用於避免STOP REPLICA
與使用不同用戶端連線到副本的其他 SQL 陳述式之間的死鎖。rpl_stop_replica_timeout
的最大值和預設值為 31536000 秒(1 年)。最小值為 2 秒。對此變數的變更會對後續的STOP REPLICA
陳述式生效。此變數僅影響發出
STOP REPLICA
陳述式的用戶端。當達到逾時時,發出請求的用戶端會傳回錯誤訊息,指出命令執行不完整。然後,用戶端會停止等待複製 I/O(接收器)和 SQL(應用程式)執行緒停止,但複製執行緒會繼續嘗試停止,並且STOP REPLICA
陳述式仍保持有效。一旦複製執行緒不再忙碌,就會執行STOP REPLICA
陳述式,且副本停止。 -
命令列格式 --rpl-stop-slave-timeout=#
已棄用 是 系統變數 rpl_stop_slave_timeout
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 31536000
最小值 2
最大值 31536000
單位 秒 已棄用的
rpl_stop_replica_timeout
同義詞。 -
命令列格式 --skip-replica-start[={OFF|ON}]
系統變數 skip_replica_start
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
skip_replica_start
告訴副本伺服器在伺服器啟動時不要啟動複製 I/O(接收器)和 SQL(應用程式)執行緒。若要稍後啟動執行緒,請使用START REPLICA
陳述式。此系統變數是唯讀的,可以使用
PERSIST_ONLY
關鍵字或SET
陳述式的@@persist_only
限定詞來設定。--skip-replica-start
命令列選項也會設定此系統變數。您可以使用系統變數來取代命令列選項,以便允許使用 MySQL 伺服器的權限結構來存取此功能,這樣資料庫管理員就不需要任何作業系統的特殊存取權。 -
命令列格式 --skip-slave-start[={OFF|ON}]
已棄用 是 系統變數 skip_slave_start
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
已棄用的
--skip-replica-start
同義詞。 -
命令列格式 --slave-checkpoint-group=#
已棄用 是 系統變數 slave_checkpoint_group
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 512
最小值 32
最大值 524280
區塊大小 8
已棄用的
replica_checkpoint_group
同義詞。 -
命令列格式 --slave-checkpoint-period=#
已棄用 是 系統變數 slave_checkpoint_period
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 300
最小值 1
最大值 4294967295
單位 毫秒 已棄用的
replica_checkpoint_period
同義詞。 -
命令列格式 --slave-compressed-protocol[={OFF|ON}]
已棄用 是 系統變數 slave_compressed_protocol
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 OFF
已棄用的
replica_compressed_protocol
別名。 -
命令列格式 --slave-exec-mode=模式
系統變數 slave_exec_mode
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 列舉 預設值 IDEMPOTENT
(NDB)STRICT
(其他)有效值 STRICT
IDEMPOTENT
已棄用的
replica_exec_mode
別名。 -
命令列格式 --slave-load-tmpdir=目錄名稱
已棄用 是 系統變數 slave_load_tmpdir
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 目錄名稱 預設值 --tmpdir 的值
已棄用的
replica_load_tmpdir
別名。 -
命令列格式 --slave-max-allowed-packet=#
已棄用 是 系統變數 slave_max_allowed_packet
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 1073741824
最小值 1024
最大值 1073741824
單位 位元組 區塊大小 1024
已棄用的
replica_max_allowed_packet
別名。 -
命令列格式 --slave-net-timeout=#
已棄用 是 系統變數 slave_net_timeout
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 60
最小值 1
最大值 31536000
單位 秒 已棄用的
replica_net_timeout
別名。 -
命令列格式 --slave-parallel-type=值
已棄用 是 系統變數 slave_parallel_type
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 列舉 預設值 LOGICAL_CLOCK
有效值 DATABASE
LOGICAL_CLOCK
已棄用的
replica_parallel_type
別名。 -
命令列格式 --slave-parallel-workers=#
已棄用 是 系統變數 slave_parallel_workers
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 4
最小值 0
最大值 1024
已棄用的
replica_parallel_workers
別名。 -
命令列格式 --slave-pending-jobs-size-max=#
已棄用 是 系統變數 slave_pending_jobs_size_max
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 128M
最小值 1024
最大值 16EiB
單位 位元組 區塊大小 1024
已棄用的
replica_pending_jobs_size_max
別名。 -
命令列格式 --slave-preserve-commit-order[={OFF|ON}]
已棄用 是 系統變數 slave_preserve_commit_order
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
已棄用的
replica_preserve_commit_order
別名。 -
命令列格式 --slave-skip-errors=name
已棄用 是 系統變數 slave_skip_errors
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 預設值 OFF
有效值 OFF
[錯誤代碼清單]
all
ddl_exist_errors
已棄用的
replica_skip_errors
別名。 -
命令列格式 --replica-skip-errors=name
系統變數 replica_skip_errors
範圍 全域 動態 否 SET_VAR
提示是否適用否 類型 字串 預設值 OFF
有效值 OFF
[錯誤代碼清單]
all
ddl_exist_errors
通常,當副本上發生錯誤時,複製會停止,這讓您有機會手動解決資料中的不一致問題。此變數會讓複製 SQL 執行緒在語句傳回變數值中列出的任何錯誤時繼續複製。
-
命令列格式 --slave-sql-verify-checksum[={OFF|ON}]
已棄用 是 系統變數 slave_sql_verify_checksum
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 布林值 預設值 ON
已棄用的
replica_sql_verify_checksum
別名。 -
命令列格式 --slave-transaction-retries=#
已棄用 是 系統變數 slave_transaction_retries
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10
最小值 0
最大值 (64 位元平台) 18446744073709551615
最大值 (32 位元平台) 4294967295
已棄用的
replica_transaction_retries
別名。 -
命令列格式 --slave-type-conversions=set
已棄用 是 系統變數 slave_type_conversions
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 設定 預設值 有效值 ALL_LOSSY
ALL_NON_LOSSY
ALL_SIGNED
ALL_UNSIGNED
已棄用的
replica_type_conversions
別名。 -
系統變數 sql_replica_skip_counter
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
sql_replica_skip_counter
指定副本應略過來源的事件數。設定此選項不會立即生效。此變數適用於下一個START REPLICA
語句;下一個START REPLICA
語句也會將值變更回 0。當此變數設定為非零值且已設定多個複製通道時,START REPLICA
語句只能與FOR CHANNEL
子句一起使用。channel
此選項與基於 GTID 的複製不相容,且當設定
gtid_mode=ON
時,不得設定為非零值。如果您在使用 GTID 時需要略過交易,請改用來源中的gtid_executed
。如果您已使用CHANGE REPLICATION SOURCE TO
語句的ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
選項,在複製通道上啟用 GTID 指派,則sql_replica_skip_counter
可用。請參閱第 19.1.7.3 節「略過交易」。重要事項如果略過設定此變數所指定的事件數會導致副本從事件群組的中間開始,則副本會繼續略過,直到找到下一個事件群組的開頭,並從該點開始。如需更多資訊,請參閱第 19.1.7.3 節「略過交易」。
-
已棄用 是 系統變數 sql_slave_skip_counter
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 0
最小值 0
最大值 4294967295
已棄用的
sql_replica_skip_counter
別名。 -
命令列格式 --sync-master-info=#
已棄用 是 系統變數 sync_master_info
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10000
最小值 0
最大值 4294967295
已棄用的
sync_source_info
別名。 -
命令列格式 --sync-relay-log=#
系統變數 sync_relay_log
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10000
最小值 0
最大值 4294967295
如果此變數的值大於 0,MySQL 伺服器會在每個
sync_relay_log
事件寫入中繼日誌後,將其中繼日誌同步至磁碟 (使用fdatasync()
)。設定此變數會立即對所有複製通道生效,包括正在執行的通道。將
sync_relay_log
設定為 0 會導致不執行同步至磁碟;在這種情況下,伺服器會依賴作業系統不時地清除中繼日誌的內容,就像任何其他檔案一樣。值 1 是最安全的選擇,因為在發生意外停止的情況下,您最多會遺失中繼日誌中的一個事件。但是,它也是最慢的選擇 (除非磁碟具有電池備份快取,這會使同步非常快)。如需關於副本上最能抵禦意外停止的設定組合資訊,請參閱第 19.4.2 節「處理副本的意外停止」。
-
命令列格式 --sync-relay-log-info=#
已棄用 是 系統變數 sync_relay_log_info
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10000
最小值 0
最大值 4294967295
副本更新套用程式中繼資料存放區的交易數。當套用程式中繼資料存放區儲存為
InnoDB
資料表時 (預設值),它會在每次交易後更新,並忽略此系統變數。如果套用程式中繼資料存放區儲存為檔案 (已棄用),則副本會在這麼多交易後,將其relay-log.info
檔案同步至磁碟 (使用fdatasync()
)。0
(零) 表示檔案內容僅由作業系統清除。設定此變數會立即對所有複製通道生效,包括正在執行的通道。由於將套用程式中繼資料儲存為檔案已棄用,因此此變數也已棄用,且伺服器會在您設定或讀取其值時發出警告。您應該預期
sync_relay_log_info
會在未來版本的 MySQL 中移除,並立即移轉可能依賴它的應用程式。 -
命令列格式 --sync-source-info=#
系統變數 sync_source_info
範圍 全域 動態 是 SET_VAR
提示是否適用否 類型 整數 預設值 10000
最小值 0
最大值 4294967295
sync_source_info
指定副本更新連線中繼資料存放區後的事件數。當連線中繼資料存放區儲存為InnoDB
資料表時 (預設值),它會在此事件數後更新。如果連線中繼資料存放區儲存為檔案 (已棄用),則副本會在這麼多事件後,將其master.info
檔案同步至磁碟 (使用fdatasync()
)。預設值為 10000,而零值表示存放區永遠不會更新。設定此變數會立即對所有複製通道生效,包括正在執行的通道。 -
命令列格式 --terminology-use-previous=#
系統變數 terminology_use_previous
範圍 全域、工作階段 動態 是 SET_VAR
提示是否適用否 類型 列舉 預設值 NONE
有效值 NONE
BEFORE_8_0_26
BEFORE_8_2_0
MySQL 8.0 中,對包含術語
master
、slave
和mts
(用於 「多執行緒從屬裝置」) 的儀器名稱進行了不相容的變更,這些術語分別變更為source
、replica
和mta
(用於 「多執行緒套用程式」)。如果這些不相容的變更影響您的應用程式,請將terminology_use_previous
設定為BEFORE_8_0_26
,以讓 MySQL 伺服器針對先前清單中指定的物件使用舊版本的名稱。這讓依賴舊名稱的監視工具可以繼續運作,直到它們可以更新為使用新名稱為止。MySQL 8.4 通常會在
SHOW CREATE EVENT
、SHOW EVENTS
的輸出中,以及對 Information SchemaEVENTS
資料表的查詢中顯示REPLICA_SIDE_DISABLED
,而不是SLAVESIDE_DISABLED
。您可以將terminology_use_previous
設定為BEFORE_8_0_26
或BEFORE_8_2_0
,以讓改為顯示SLAVESIDE_DISABLED
。使用工作階段範圍設定
terminology_use_previous
系統變數以支援個別使用者,或使用全域範圍,使其成為所有新工作階段的預設值。使用全域範圍時,慢查詢日誌會包含舊版本的名稱。受影響的儀器名稱在以下清單中提供。
terminology_use_previous
系統變數僅影響這些項目。它不會影響 MySQL 8.0 中也引入的系統變數、狀態變數和命令列選項的新別名,而且當啟用時仍可使用這些別名。儀器鎖定 (互斥鎖定),在
mutex_instances
和events_waits_*
Performance Schema 資料表中可見,前置詞為wait/synch/mutex/
讀/寫鎖定,在
rwlock_instances
和events_waits_*
Performance Schema 資料表中可見,前置詞為wait/synch/rwlock/
儀器條件變數,在
cond_instances
和events_waits_*
Performance Schema 資料表中可見,前置詞為wait/synch/cond/
儀器記憶體配置,在
memory_summary_*
Performance Schema 資料表中可見,前置詞為memory/sql/
執行緒名稱,在
threads
Performance Schema 資料表中可見,前置詞為thread/sql/
執行緒階段,在
events_stages_*
Performance Schema 資料表中可見,前置詞為stage/sql/
,且在threads
和processlist
Performance Schema 資料表中沒有前置詞,以及SHOW PROCESSLIST
語句的輸出、Information Schemaprocesslist
資料表和慢查詢日誌執行緒命令,在
events_statements_history*
和events_statements_summary_*_by_event_name
Performance Schema 資料表中可見,前置詞為statement/com/
,且在threads
和processlist
Performance Schema 資料表中沒有前置詞,以及SHOW PROCESSLIST
語句的輸出、Information Schemaprocesslist
資料表和SHOW REPLICA STATUS
語句的輸出