

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon RDS 的備份和復原
<a name="rds"></a>

Amazon RDS 包含自動化資料庫備份的功能。Amazon RDS 會建立資料庫執行個體的儲存磁碟區快照，備份整個資料庫執行個體，而非僅限個別資料庫。使用 Amazon RDS，您可以建立自動備份的備份時段、建立資料庫執行個體快照，以及跨區域和帳戶共用和複製快照。

Amazon RDS 提供兩種不同的選項來備份和還原資料庫執行個體：
+ **自動化備份**提供資料庫執行個體的point-in-time復原 (PITR)。當您建立新的資料庫執行個體時，預設會開啟自動備份。

  Amazon RDS 會在您建立資料庫執行個體時所定義的備份時段期間，執行資料的每日備份。您可以為自動備份設定最長 35 天的保留期。Amazon RDS 也會每 5 分鐘將資料庫執行個體的交易日誌上傳至 Amazon S3。Amazon RDS 會使用每日備份以及資料庫交易日誌來還原資料庫執行個體。您可以在保留期間將執行個體還原至任何秒，最多可還原至 `LatestRestorableTime`（通常為最後五分鐘）。

  若要尋找資料庫執行個體的最新可還原時間，請使用 `DescribeDBInstances` API 呼叫。或者，查看 Amazon RDS 主控台上資料庫的**描述**索引標籤。

  當您啟動 PITR 時，交易日誌會與最適當的每日備份結合，以將資料庫執行個體還原至請求的時間。
+ **資料庫快照**是使用者啟動的備份，您可以視需要頻繁地將資料庫執行個體還原至已知狀態。然後，您可以隨時還原到該狀態。您可以使用 Amazon RDS 主控台或 `CreateDBSnapshot` API 呼叫來建立資料庫快照。這些快照會保留，直到您使用 主控台或 `DeleteDBSnapshot` API 呼叫明確刪除為止。

中的 Amazon RDS 支援這兩種備份選項 AWS Backup，這也提供其他功能。請考慮使用 AWS Backup 為您的 Amazon RDS 資料庫設定標準備份計畫，並在特定資料庫的備份計畫是唯一的時，使用使用者起始的執行個體備份選項。

Amazon RDS 可防止直接存取資料庫執行個體所使用的基礎儲存體。這也可防止您將 RDS 資料庫執行個體上的資料庫直接匯出至其本機磁碟。在某些情況下，您可以使用用戶端公用程式來使用原生備份和還原函數。例如，您可以使用 [mysqldump 命令搭配 Amazon RDS MySQL 資料庫](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html)，將資料庫匯出至本機用戶端機器。在某些情況下，Amazon RDS 也提供增強型選項，以執行資料庫的原生備份和還原。例如，Amazon RDS 提供預存程序來[匯出和匯入 SQL Server 資料庫的 RDS 資料庫備份](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html)。

作為整體備份和還原方法的一部分，請務必徹底測試資料庫還原程序及其對資料庫用戶端的影響。

## 使用 DNS CNAME 記錄來減少資料庫復原期間的用戶端影響
<a name="dns-cname"></a>

當您使用 PITR 或 RDS 資料庫執行個體快照還原資料庫時，會建立新的資料庫執行個體與新的端點。如此一來，您可以從特定資料庫快照或時間點建立多個資料庫執行個體。當您還原 RDS 資料庫執行個體以取代即時 RDS 資料庫執行個體時，有特殊考量。例如，您必須判斷如何將現有資料庫用戶端重新導向至新執行個體，並將中斷和修改降至最低。您也必須在新執行個體開始接收寫入時，考慮還原的資料時間和復原時間，以確保資料庫內資料的持續性和一致性。

您可以建立指向資料庫執行個體端點的個別 DNS CNAME 記錄，並讓用戶端使用此 DNS 名稱。然後，您可以更新 CNAME 以指向新的還原端點，而無需更新資料庫用戶端。

將 CNAME 記錄的存留時間 (TTL) 設定為適當的值。您指定的 TTL 會決定在發出另一個請求之前，使用 DNS 解析程式快取記錄的時間長度。請務必注意，某些 DNS 解析程式或應用程式可能無法遵守 TTL，而且快取記錄的時間可能會超過 TTL。對於 Amazon Route 53，如果您指定較長的值 （例如 172800 秒或兩天），您可以減少 DNS 遞迴解析程式必須對 Route 53 進行的呼叫數量，以取得此記錄中的最新資訊。這可減少延遲，並減少 Route 53 服務的帳單。如需詳細資訊，請參閱 [Amazon Route 53 如何路由網域的流量](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html#welcome-dns-service-how-route-53-routes-traffic)。

應用程式和用戶端作業系統也可能快取您必須排清或重新啟動的 DNS 資訊，以啟動新的 DNS 解析請求並擷取更新的 CNAME 記錄。

當您啟動資料庫還原並將流量轉移到還原的執行個體時，請確認所有用戶端正在寫入還原的執行個體，而不是先前的執行個體。您的資料架構可能支援還原資料庫、更新 DNS 以將流量轉移到還原的執行個體，然後修復可能仍寫入先前執行個體的任何資料。如果不是這種情況，您可以在更新 DNS CNAME 記錄之前停止現有的執行個體。然後，所有存取都是來自新還原的執行個體。這可能會對您可以個別處理的某些資料庫用戶端暫時造成連線問題。若要降低用戶端影響，您可以在維護時段期間執行資料庫還原。

編寫您的應用程式，使用指數退避來正常處理重試的資料庫連線失敗。這可讓您的應用程式在還原期間無法使用資料庫連線時復原，而不會導致應用程式意外當機。

完成還原程序後，您可以將先前的執行個體保持在停止狀態。或者，您可以使用安全群組規則來限制先前執行個體的流量，直到您滿意不再需要為止。對於逐步解除委任方法，請先限制安全群組對執行中資料庫的存取。您最終可以在不再需要執行個體時停止執行個體。最後，拍攝資料庫執行個體的快照並將其刪除。