本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Aurora MySQL 設定延遲複寫
您可以使用延遲複寫做為 Aurora MySQL 災難復原的策略。利用延遲複寫功能來指定最短時間 (以秒為單位),即可延遲來源到僅供讀取複本的複寫作業。在發生損毀之時 (例如不小心刪除資料表),若要快速完成事後復原作業,則請執行下列步驟:
-
在來源傳送造成災難的變更之前,停止複寫至僅供讀取複本。使用 mysql.rds_stop_replication 預存程序來停止複寫作業。
-
啟動複寫作業並指定日誌檔案位置,則當系統複寫到該位置時,即會自動停止作業。透過 mysql.rds_start_replication_until(Aurora MySQL 第 3 版) 預存程式,藉此在發生損毀前指定日誌檔案位置。
-
使用 中的指示,將僅供讀取複本提升為新的來源資料庫叢集將僅供讀取複本提升為 Aurora MySQL 的資料庫叢集。
注意
Aurora MySQL 支援 8.4.8 版和更新版本的延遲複寫。
-
使用預存程序來設定延遲複寫。您無法使用 AWS 管理主控台 AWS CLI、 或 Amazon RDS API 設定延遲複寫。
-
您可以在 Aurora MySQL 8.4.8 版及更高版本上的延遲複寫組態中使用基於全域交易識別符 (GTIDs) 的複寫。
-
如果您使用 GTID 式複寫,請使用 mysql.rds_start_replication_until_gtid(Aurora MySQL 第 3 版) 預存程序,而非 mysql.rds_start_replication_until(Aurora MySQL 第 3 版) 預存程序。
-
Aurora MySQL 支援最多 15 個頻道的多來源複寫。使用
_for_channel程序變體在特定頻道上設定延遲複寫。
延遲複寫的使用案例
Aurora MySQL 上的延遲複寫適用於二進位日誌式複寫。這包括從 Aurora MySQL 寫入器資料庫叢集複寫到 binlog 複本、從外部 MySQL 來源複寫到 Aurora MySQL 資料庫叢集,或跨多來源複寫通道。它不適用於單一資料庫叢集內的 Aurora 複本,因為這些複本會從共用叢集儲存讀取,而不是從二進位日誌讀取。常見的使用案例包括下列項目:
-
從運算子錯誤進行災難復原 – 維護 Binlog 複本,該複本會以設定的間隔延遲來源。如果破壞性陳述式意外執行 (例如捨棄資料表),請在來源套用變更之前停止延遲複本上的複寫。然後使用 mysql.rds_start_replication_until(Aurora MySQL 第 3 版)或 向前滾動至事件發生前的 mysql.rds_start_replication_until_gtid(Aurora MySQL 第 3 版)。最後,提升複本。這種方法提供的復原路徑比point-in-time復原更快,這需要損毀復原和二進位日誌重播。
-
防止邏輯資料損毀 – 延遲複本也會防止應用程式部署或遷移故障而逐漸損毀資料。由於複本會保留延遲時間長度的預先損毀狀態,因此您可以在套用故障交易之前進行復原。
-
主要版本和藍/綠升級 – 在升級期間保留延遲的 Binlog 複本,或保留藍/綠部署做為安全網路,以便在升級發生問題時回到已知良好的狀態。
-
從外部來源變更資料擷取 (CDC) – 當您從外部 MySQL 來源擷取變更至 Aurora MySQL 資料庫叢集時,刻意延遲會在將變更套用到下游之前為您提供受控緩衝區。
-
沒有還原的歷史檢查 – 查詢延遲複本,以查看您稍早資料的外觀。這有助於偵錯、稽核或調查變更的內容,而無需佈建複製或執行point-in-time還原。
-
在複寫延遲下測試應用程式行為 – 使用人工膨脹的延遲來驗證應用程式在複本延遲時的行為,並針對延遲敏感的條件執行迴歸測試,而無需產生繁衍延遲的繁重負載。
設定具有延遲的外部複寫
若要設定具有延遲複寫的外部來源,請使用 mysql.rds_set_external_source_with_delay (版本Aurora MySQL 版本 8.4.8 和更新版本)預存程序。如需所有複寫預存程序的詳細資訊,請參閱 設定、啟動和停止二進位日誌 (binlog) 複寫。
範例 (預設頻道):
CALL mysql.rds_set_external_source_with_delay( 'source-host.example.com', 3306, 'repl_user', 'repl_password', 'mysql-bin-changelog.000001', 120, 0, 3600);
範例 (特定頻道):
CALL mysql.rds_set_external_source_with_delay_for_channel( 'source-host.example.com', 3306, 'repl_user', 'repl_password', 'mysql-bin-changelog.000001', 120, 0, 3600, 'channel_1');
參數:
host_name-
外部來源的主機名稱或 IP 地址。
host_port-
外部來源的連接埠號碼。
replication_user_name-
外部來源上的複寫使用者。
replication_user_password-
複寫使用者的密碼。
mysql_binary_log_file_name-
外部來源上二進位日誌檔案的名稱。
mysql_binary_log_file_location-
二進位日誌檔案中開始複寫的位置。
ssl_encryption-
將此參數設定為
1以啟用複寫連線的 SSL 加密,或設定為0以停用 SSL 加密。 延遲-
最小延遲秒數 (0–259,200)。
頻道-
(僅適用於_通道變體) 多來源複寫的通道名稱。
限制條件:
-
Aurora MySQL 最多支援 15 個複寫通道。
-
每個頻道都必須從不同的來源複寫 (主機:連接埠組合)。
-
延遲必須介於 0 到 259,200 秒 (72 小時) 之間。
-
在修改頻道組態之前停止複寫。
修改現有僅供讀取複本的延遲複寫
若要修改現有僅供讀取複本的延遲複寫,請執行 mysql.rds_set_source_delay (版本Aurora MySQL 8.4.8 及更高版本) 預存程序。如需所有複寫預存程序的詳細資訊,請參閱 設定、啟動和停止二進位日誌 (binlog) 複寫。
若要修改現有僅供讀取複本的延遲複寫:
-
使用 MySQL 用戶端,以管理員使用者身分連線至僅供讀取複本。
-
使用 mysql.rds_stop_replication 預存程序來停止複寫作業。
-
執行 mysql.rds_set_source_delay (版本Aurora MySQL 8.4.8 及更高版本) 預存程序。
-
使用 mysql.rds_start_replication 預存程序來啟動複寫作業。
範例 (預設頻道):
CALL mysql.rds_set_source_delay(3600);
範例 (特定頻道):
CALL mysql.rds_set_source_delay_for_channel(3600, 'channel_1');
這會指定對僅供讀取複本的複寫會延遲至少一小時 (3,600 秒)。延遲值必須介於 0 到 259,200 秒 (72 小時) 之間。
注意
在設定延遲之前停止複寫。如果複寫正在執行,您會收到錯誤,要求您先呼叫 mysql.rds_stop_replication(或mysql.rds_stop_replication_for_channel特定頻道)。
設定位置以停止複寫至僅供讀取複本
停止僅供讀取複本的複寫作業後,您可以使用 mysql.rds_start_replication_until(Aurora MySQL 第 3 版) 預存程序來啟動複寫,然後在特定的二進位日誌檔案位置停止複寫。
若要開始複寫並在特定位置停止:
-
使用 MySQL 用戶端,以管理員使用者身分連線至僅供讀取複本。
-
執行 mysql.rds_start_replication_until(Aurora MySQL 第 3 版) 預存程序。
範例:
CALL mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
這會啟動複寫並複寫變更,直到達到mysql-bin-changelog.000777二進位日誌檔案中的位置 120。在災難復原案例中,假設位置 120 就在災難之前。
當 Aurora MySQL 到達停止點時,複寫會自動停止。Aurora MySQL 會產生下列事件:Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure。
如果您使用 GTID 式複寫,請改用 mysql.rds_start_replication_until_gtid(Aurora MySQL 第 3 版) 預存程序。
提升僅供讀取複本
複寫停止後,在災難復原案例中,您可以將僅供讀取複本提升為新的來源資料庫叢集。如需提升僅供讀取複本的相關資訊,請參閱 將僅供讀取複本提升為 Aurora MySQL 的資料庫叢集。
相關主題
-
如需所有複寫預存程序的完整參考,請參閱 設定、啟動和停止二進位日誌 (binlog) 複寫。