跳至內容

如何疑難排解並解決 Aurora MySQL 相容版快照還原問題?

2 分的閱讀內容
0

我想要從快照或備份還原我的 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 命令為叢集建立寫入器執行個體和讀取器執行個體。

還原完成後,新叢集會擁有不同於原始叢集的端點。若要在替換生產叢集時盡量縮短停機時間,請完成以下步驟:

  1. 還原到叢集時請使用新名稱,例如 original-cluster-name-new
  2. 將現有叢集重新命名為 original-cluster-name-old
    注意: 重新命名叢集時,會出現 1 到 3 分鐘的停機時間。
  3. 將新叢集重新命名為原始名稱。

此外,還原到新叢集後,您必須手動新增並設定新叢集中需要的多可用區域讀取器執行個體。

若要在新叢集中新增讀取器執行個體,請完成下列步驟:

  1. 開啟 Aurora 和 RDS 主控台
  2. 在導覽窗格中,選取 Databases (資料庫),然後選取新叢集。
  3. 等待新主要執行個體的狀態變成可用,然後選取 Actions (動作)。
  4. 若要在相同 AWS 區域中將讀取器新增至新叢集,請選取 Add reader (新增讀取器)。
  5. 若要設定跨區域讀取複寫,請選取 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 備份儲存體使用量)

為什麼我的 Amazon Aurora 資料庫叢集的複製、快照還原或時間點還原需要這麼長時間?

AWS 官方已更新 10 個月前