本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 GTID 複寫交易
下列預存程序控制如何使用全域交易識別符 (GTID) 搭配 Aurora MySQL 複寫交易。如要了解透過 Aurora MySQL 使用以 GTID 為基礎的複寫使用方式,請參閱 使用 GTID 式複寫。
主題
mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL 第 3 版)
配置 CHANGE REPLICATION SOURCE TO 陳述式的 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 選項。它會使複寫通道將 GTID 指派給沒有 GTID 的複寫交易。如此一來,您就可以將二進位日誌從不使用 GTID 型複寫的來源複寫到使用該複寫的複本。如需詳細資訊,請參閱《MySQL 參考手冊》中的 CHANGE REPLICATION SOURCE TO 陳述式
語法
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
參數
-
gtid_option -
字串值。允許的值為
OFF、LOCAL或指定的 UUID。
使用須知
此程序的效果與在社群 MySQL 中發出陳述式 CHANGE
REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS =
相同。gtid_option
GTID 必須轉換為 ON,gtid_option 才能設定為 LOCAL 或特定的 UUID。
預設為 OFF,表示不使用該功能。
LOCAL 會指派 GTID,其中包含複本自己的 UUID (server_uuid 設定)。
傳遞的參數是 UUID,則會指派一個 UUID,其中包含指定的 GTID,例如複寫來源伺服器的 server_uuid 設定。
範例
若要關閉此功能:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)
若要使用複本自己的 UUID:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)
若要使用指定的 UUID:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)
mysql.rds_gtid_purged (Aurora MySQL 3 版)
將系統變數 gtid_purged 的全域值設定為特定全域交易識別碼 (GTID) 設定。gtid_purged 系統變數是一個 GTID 集,由伺服器上已提交但不存在於伺服器上的任何二進位日誌檔中的所有 GTID 交易組成。
為了與 MySQL 8.0 相容,有兩種方法可以設定 gtid_purged 的值:
-
將
gtid_purged的值取代為指定的 GTID 設定。 -
將指定的 GTID 集附加至已包含
gtid_purged的 GTID 設定。
語法
若要使用指定的 GTID 設定取代 gtid_purged 的值:
CALL mysql.rds_gtid_purged (gtid_set);
若要將指定的 GTID 設定附加至 gtid_purged 的值:
CALL mysql.rds_gtid_purged (+gtid_set);
參數
gtid_set-
gtid_set的值必須是目前gtid_purged值的超集,且不能與gtid_subtract(gtid_executed,gtid_purged)相交。也就是說,新的 GTID 集必須包含已在gtid_purged中的任何 GTID,並且不能在gtid_executed中包含任何 GTID 尚未清除的項目。gtid_set參數也不能包含全域中的任何 GTIDgtid_owned設定,目前正在伺服器上處理交易的 GTID。
使用須知
主要使用者必須執行 mysql.rds_gtid_purged 程序。
Aurora MySQL 3.04 版及更新版本支援此程序。
範例
下列範例會指派 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 到 gtid_purged 全域變數。
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_transaction_with_gtid (Aurora MySQL 第 2 版和第 3 版)
略過 Aurora 主要執行個體上具有指定全域交易識別符 (GTID) 之交易的複寫。
若已知特定 GTID 交易導致錯誤,可以使用此程序進行災難復原。使用此預存程序來略過有問題的交易。有問題的交易範例包括停用複寫、刪除重要資料或導致資料庫執行個體無法使用的交易。
語法
CALL mysql.rds_skip_transaction_with_gtid (gtid_to_skip);
參數
-
gtid_to_skip -
要略過的複寫交易的 GTID。
使用須知
主要使用者必須執行 mysql.rds_skip_transaction_with_gtid 程序。
Aurora MySQL 第 2 版和第 3 版支援此程序。
範例
下列範例會略過使用 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 進行交易的複寫。
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_start_replication_until_gtid (Aurora MySQL 3 版)
從 Aurora MySQL 資料庫叢集啟動複寫,並在指定的全域交易識別碼 (GTID) 之後立即停止複寫。
語法
CALL mysql.rds_start_replication_until_gtid(gtid);
參數
-
gtid -
在此 GTID 後停止複寫。
使用須知
主要使用者必須執行 mysql.rds_start_replication_until_gtid 程序。
Aurora MySQL 3.04 版及更新版本支援此程序。
受管複寫不支援 mysql.rds_start_replication_until_gtid 預存程序,其中包括下列項目:
當 gtid 參數指定了複本已經執行的交易時,複寫會立即停止。
範例
以下範例會啟動複寫並複寫變更,直到達到 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 為止。
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');