如何疑難排解並解決 Aurora MySQL 相容版快照還原問題?
我想要從快照或備份還原我的 Amazon Aurora MySQL 相容版資料庫叢集,但我遇到問題。
簡短說明
您可以使用多種方式,透過快照或備份還原整個 Aurora MySQL 相容版資料庫叢集。您可以使用 Aurora 和 Amazon Relational Database Service (Amazon RDS) 主控台,從快照還原整個資料庫叢集,或執行時間點復原 (PITR) 還原。您也可以使用 AWS Backup 管理自動化備份,並從 PITR 還原。或者,您可以建立資料庫的 Aurora 複製。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshooting errors for the AWS CLI (對 AWS CLI 錯誤進行疑難排解)。此外,請務必使用最新版 AWS CLI。
使用 Aurora 和 RDS 主控台從快照還原
當您建立快照時,Aurora 會備份整個資料庫叢集。對於 Aurora,您無法選擇為叢集中的個別資料庫執行個體建立快照。
若是簡易還原操作,請使用 Aurora 和 RDS 主控台。當您使用 Aurora 和 RDS 主控台從資料庫叢集快照還原時,Aurora 會建立新叢集並佈建寫入器執行個體。您無法將快照還原到現有叢集。
您也可以使用 restore-db-cluster-from-snapshot 命令,從快照還原叢集,但此方法只會建立叢集。接著,使用 create-db-instance 命令為叢集建立寫入器執行個體和讀取器執行個體。
還原完成後,新叢集會擁有不同於原始叢集的端點。若要在替換生產叢集時盡量縮短停機時間,請完成以下步驟:
- 還原到叢集時請使用新名稱,例如 original-cluster-name-new。
- 將現有叢集重新命名為 original-cluster-name-old。
注意: 重新命名叢集時,會出現 1 到 3 分鐘的停機時間。 - 將新叢集重新命名為原始名稱。
此外,還原到新叢集後,您必須手動新增並設定新叢集中需要的多可用區域讀取器執行個體。
若要在新叢集中新增讀取器執行個體,請完成下列步驟:
- 開啟 Aurora 和 RDS 主控台。
- 在導覽窗格中,選取 Databases (資料庫),然後選取新叢集。
- 等待新主要執行個體的狀態變成可用,然後選取 Actions (動作)。
- 若要在相同 AWS 區域中將讀取器新增至新叢集,請選取 Add reader (新增讀取器)。
- 若要設定跨區域讀取複寫,請選取 Create cross-region read replica (建立跨區域讀取複寫)。
防止還原緩慢
如果磁碟區容量很大、執行個體類別的 I/O 大小較低,或網路頻寬不足,叢集就需要更長時間才能還原。此外,目標資料庫的最大儲存體輸送量可能會影響還原速度。
若要盡量縮短還原 Aurora MySQL 相容版叢集所需的時間,請採取以下動作:
- 檢查原始叢集上的 RollbackSegmentHistoryListLength (HLL) 值。高 HLL 值代表有大量復原記錄,這可能會讓還原變慢。若要解決此問題,請監控 CloudWatch 中的 HLL 指標,並讓該值保持在較低水準。
- 若要提升還原效能,請選擇具備更高儲存體輸送量和網路頻寬的較大執行個體類別。
- 在工作負載較低的時段建立快照。如果您在資料庫活動較少時建立快照,就可以減少 Aurora 在還原期間處理的復原記錄。
- 以較小批次提交交易。如果您將長時間執行的交易拆分成較小單位,就可以降低復原日誌的大小。
- 建立快照前,請避免長時間執行的交易。長時間執行的交易會產生更多復原記錄,Amazon RDS 必須在還原期間處理這些記錄。
使用 AWS Backup 進行 PITR
當您使用 AWS Backup 建立快照時,快照名稱會包含 awsbackup:job-AWS-Backup-job-number。這些快照視為手動資料庫叢集快照,但不會計入 Aurora 的資料庫叢集快照配額。
您也可以使用 AWS Backup 管理 PITR 的自動化備份。AWS Backup 管理的自動化備份名稱會包含 continuous:cluster-AWS-Backup-job-number。若要開啟 PITR,您必須在備份規則中開啟連續備份。
使用 AWS Backup 主控台還原與 AWS Backup 計劃相關聯的叢集。使用 AWS Backup 主控台還原叢集後,您必須新增主要寫入器資料庫執行個體。若要執行此操作,請執行 create-db-instance AWS CLI 命令。將 --db-cluster-identifier 替換為已還原資料庫叢集的名稱。
備份失敗
當您在 AWS Backup 中使用的政策沒有足夠的 AWS Identity and Access Management (IAM) 權限時,可能會發生備份失敗。若要解決此問題,請確認 IAM 角色或使用者具有使用 AWS Backup 執行備份操作所需的權限。您必須附加 IAM 政策,將 backup:StartBackupJob 權限授予 IAM 角色或使用者。
當 IAM 角色或使用者無法存取備份操作所需的 AWS Key Management Service (KMS) 金鑰時,也可能會發生備份失敗。如果您的 Aurora 叢集使用靜態加密,請確認 IAM 角色或使用者可以存取並使用加密叢集儲存體的 AWS KMS key。您必須在金鑰資源政策上授予 kms:GenerateDataKey 權限。
還原失敗
當您嘗試從備份快照還原 Aurora MySQL 相容版叢集時,可能會因以下原因收到 "Incompatible-restore" 錯誤:
- 來源資料庫包含暫存資料表或 MyISAM 資料表,而 Aurora 在您還原到新叢集時不支援這些資料表。若要解決此問題,請在建立快照前移除這些資料表。
- 來源資料庫中的外部索引鍵條件約束不一致或循環相依時,可能會導致無法成功還原。若要解決此問題,請在建立快照前修正條件約束。
- 目標叢集的引擎版本不相容。若要解決此問題,請確認目標 Aurora MySQL 引擎版本與您用來建立快照的版本相容。如果您想要升級新叢集的引擎版本,請先還原到相容版本。然後,升級還原後的叢集。
- 網路組態不正確。請再次確認您在還原程序期間指定的虛擬私有雲端 (VPC)、子網路群組和安全群組設定,符合預期的目標環境。
- IAM 角色或使用者沒有 AWS KMS key 存取權。如果快照使用加密,請確認 IAM 角色或使用者具有存取權限,可以存取並使用指定的 AWS KMS key 進行解密。
建立 Aurora 複製
您也可以改用另一種方法,建立資料庫的 Aurora 複製。透過資料庫複製功能,您可以快速建立資料庫的副本,而且只需少量額外空間。只有在發生變更時,系統才會複製資料。
相關資訊
Overview of backing up and restoring an Aurora DB cluster (備份和還原 Aurora 資料庫叢集概觀)
Restoring from a DB cluster snapshot (從資料庫叢集快照還原)
Restoring a DB cluster to a specified time (將資料庫叢集還原到指定時間)
Understanding Aurora backup storage usage (了解 Aurora 備份儲存體使用量)
- 語言
- 中文 (繁體)

相關內容
已提問 2 年前