如何將 SQL Server 資料庫原生備份到 Amazon RDS,並從 Amazon S3 還原?
我想將 SQL Server 資料庫原生備份到 Amazon Relational Database Service (Amazon RDS),並將備份檔案儲存在 Amazon Simple Storage Service (Amazon S3) 中。我也想將備份還原到執行 SQL Server 的相同或不同的 Amazon RDS DB 執行個體。
解決方法
在開始原生備份之前,請確定您已設定原生備份和還原。
**注意:**Amazon S3 儲存貯體必須與您的 Amazon RDS DB 執行個體位於相同 AWS 區域。
設定 SQL Server 資料庫的原生備份
請完成下列步驟:
- 開啟 Amazon RDS console (Amazon RDS 主控台)。
- 在導覽窗格中,選擇 Option groups (選項群組)。
- 選擇 Create group (建立群組),然後輸入伺服器的名稱、描述、引擎和引擎版本。
- 選擇 Create (建立)。
- 選取選項群組,然後選擇 Add option (新增選項)。
- 在 Option name (選項名稱) 中,請選擇 SQL SERVER\BACKUP\RESTORE。
**注意:**最佳做法是建立一個新的 AWS Identity and Access Management (IAM) 角色,以便該角色具有所需的權限。 - 在 S3 destination (S3 目的地) 中,選取您的 S3 儲存貯體。
- 在 Scheduling (排程),選擇 Immediately (立即)。
- 選擇 Add option (新增選項)。
將選項群組與資料庫執行個體建立關聯
請完成下列步驟:
- 在導覽窗格中,選擇 Databases (資料庫),然後選取要備份的執行個體。
- 選擇 Modify (修改),然後選擇 Additional configuration (其他組態)。
- 在 Database options (資料庫選項) 中,選取您的選項群組,然後選擇 Continue (繼續)。
- 查看 Summary of modifications (修改摘要)。
**注意:**由於您不需要重新啟動執行個體來修改此選項群組,因此沒有停機時間。 - 在 Schedule modifications (排程修改) 中,選擇 Apply immediately (立即套用),然後選擇 Modify DB Instance (修改資料庫執行個體)。
- 等待狀態從修改中變為可用。
透過 SSMS 連線到資料庫執行個體
請完成下列步驟:
- 以 db_owner 或 db_backupoperator 登入 Microsoft SQL Server Management Studio (SSMS)。
- 選擇新查詢,然後啟動資料庫備份。
- 輸入下列其中一個 SQL 陳述式。
若要啟動未加密資料庫的備份,請執行以下陳述式:
若要啟動已加密資料庫的備份,請執行以下陳述式:exec msdb.dbo.rds\_backup\_database @source\_db\_name='database\_name', @s3\_arn\_to\_backup\_to='arn:aws:s3:::bucket\_name/file\_name\_and\_extension', @overwrite\_S3\_backup\_file=1;
**注意:**在前述陳述式中,將 database_name、bucket_name、file_name_and_extension、region、account-id 和 key-id 替換為您的值。若要將使用者資料庫還原到新的 Amazon RDS DB 執行個體,請使用您在 S3 儲存貯體中產生的備份檔案。當您呼叫 rds\backup\database 或 rds\restore\database 程序時,任務會產生有關該任務的資訊。exec msdb.dbo.rds\_backup\_database @source\_db\_name='database\_name', @s3\_arn\_to\_backup\_to='arn:aws:s3:::bucket\_name/file\_name\_and\_extension', @kms\_master\_key\_arn='arn:aws:kms:region:account-id:key/key-id', @overwrite\_S3\_backup\_file=1;
當任務的生命週期狀態顯示成功時,表示任務完成。使用 Amazon S3 主控台,查看您在建立使用者資料庫備份之儲存貯體中的備份檔案。若要還原資料庫執行個體,請下載 S3 儲存貯體中的備份檔案,或使用使用者資料庫備份檔案。您可以還原到相同的 Amazon RDS for SQL Server DB 執行個體,也可以還原到新的 Amazon RDS DB 執行個體。也可以將此備份檔案還原至內部部署伺服器或執行 SQL Server 的其他 Amazon RDS 資料庫執行個體。如需詳細資訊,請參閱 Microsoft 網站上的快速入門: 使用 SSMS 備份和還原 SQL Server 資料庫。
若要從 S3 儲存貯體中的備份檔案還原,請使用下列其中一個 SQL 陳述式。
若要還原未加密的資料庫,請執行以下陳述式:
exec msdb.dbo.rds\_restore\_database @restore\_db\_name='database\_name',@s3\_arn\_to\_restore\_from='arn:aws:s3:::bucket\_name/file\_name\_and\_extension';
若要還原已加密的資料庫,請執行以下陳述式:
exec msdb.dbo.rds\_restore\_database @restore\_db\_name='database\_name',@s3\_arn\_to\_restore\_from='arn:aws:s3::: bucket\_name/file\_name\_and\_extension', @kms\_master\_key\_arn='arn:aws:kms:region:account-id:key/key-id';
**注意:**在前述陳述式中,將 database_name、bucket_name、file_name_and_extension、region、account-id 和 key-id 替換為您的值。
若要追蹤備份或還原陳述式的進度,您可以在輸出中取得任務 ID。或者,您可以使用以下陳述式來識別特定資料庫所有已完成和待處理的任務:
exec msdb.dbo.rds\_task\_status @db\_name='database\_name';
**注意:**將 database_name 替換為您的資料庫名稱。
若要追蹤作業的狀態,請使用下列 SQL 陳述式:
exec msdb.dbo.rds\_task\_status @task\_id=5;
如需進一步了解您可能遇到的錯誤及其解決方案,請參閱將 Microsoft SQL Server 企業工作負載移轉到 Amazon RDS。
相關資訊
相關內容
- 已提問 2 年前
- 已提問 1 年前
- 已提問 2 年前

