如何將資料庫從 EC2 執行個體或內部部署虛擬機器遷移到 RDS for SQL Server?

上次更新日期:2022 年 10 月 18 日

我想將資料庫從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或內部部署 Microsoft SQL Server 遷移到適用於 Microsoft SQL Server 執行個體的 Amazon Relational Database Service (Amazon RDS)。可以利用哪些選項遷移資料?

解決方案

遷移資料的方法

原生 SQL Server 備份與還原

您可以使用原生備份與還原,將 SQL Server 資料庫從內部部署或 EC2 執行個體遷移到 Amazon RDS for SQL Server 執行個體。

1.    建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體,以存放來自來源執行個體的備份。S3 儲存貯體必須與 RDS 執行個體位於相同的區域。

2.    建立 AWS Identity and Access Management (IAM) 角色以存取儲存貯體

3.    將 SQLSERVER_BACKUP_RESTORE 選項新增至與 RDS for SQL Server 執行個體相關聯的選項群組

4.    從來源執行個體 (內部部署或 EC2) 建立備份,然後將其複製到您在步驟 1 中建立的 S3 儲存貯體。

5.    執行下列指令碼,將備份還原至 RDS for SQL Server 執行個體:

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';

6.    執行下列指令碼,將 RDS 執行個體資料庫備份到 S3:

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;

備註:您也可以備份和還原差異備份

AWS Database Migration Service (AWS DMS)

1.    確認使用 SQL Server 做為 AWS DMS 的來源或目標的先決條件和限制:

2.    建立 DMS 複寫執行個體

3.    使用 DMS 建立來源和目標端點

4.    建立遷移任務

交易複寫

您可以設定從內部部署或 EC2 SQL Server 執行個體到 RDS for SQL Server 執行個體的交易複寫。RDS for SQL Server 執行個體只能以訂閱者的形式設定,並從內部部署或 EC2 SQL Server 執行個體以發佈者-發行者的形式推送訂閱。

如需從內部部署或 EC2 SQL Server 執行個體設定交易複寫的逐步指示,請參閱下列內容:

備份套件 (.bacpac) 檔案

.bacpac 檔案包含複製的中繼資料和壓縮至檔案的資料。這種方法是大約 200 GB 的資料庫的最佳選擇。

您可以使用匯出/匯入功能,或使用 SQLPackage.exe (命令列) 公用程式來建立 .bacpac 檔案。

如需 .bacpac 檔案的詳細資訊,請參閱使用 .bacpac 方法將 SQL Server 資料庫從 Azure SQL 資料庫遷移至 Amazon RDS for SQL Server

匯入資料的方法

產生和發佈指令碼精靈

如果您的資料庫小於 1GB,您可以使用產生和發佈指令碼精靈。對於較大的資料庫,您可以使用匯入和匯出精靈或大量複製方法來編寫資料庫結構描述的指令碼。

如需產生和發佈指令碼精靈的詳細資訊,請參閱 Microsoft SQL Server 文件中的如何產生指令碼 (SQL Server Management Studio)

備註:請確定您在 Set Scripting Option (設定指令碼選項) 頁面上選取 Save scripts to specific location (將指令碼儲存至特定位置),然後選取 Advanced (進階)。Advanced (進階) 設定提供在匯入和匯出期間於資料表中納入或排除物件的額外選項。

匯入和匯出精靈

匯入和匯出精靈會建立整合套件。整合套件可用於將資料從內部部署或 EC2 SQL Server 資料庫複製到 RDS for SQL Server 執行個體。您可以篩選要複製到 RDS 執行個體的特定資料表。

如需匯入和匯出精靈的詳細資訊,請參閱 Microsoft SQL Server 文件中的如何執行 SQL Server 匯入和匯出精靈

備註:執行匯入和匯出精靈時,請務必為 RDS for SQL Server 執行個體的 Destination (目的地) 選擇下列選項:

  • Server Name (伺服器名稱) 中,輸入 RDS 資料庫執行個體的端點名稱。
  • 針對 Authentication mode (身分驗證模式),請選取 SQL Server Authentication (SQL Server 驗證)。
  • 針對 User name (使用者名稱) 和 Password (密碼),請輸入您在 RDS 執行個體中建立的主要使用者。

Bulk Copy Program 公用程式

Bulk Copy Program (bcp) 是一款命令列公用程式,用於在 SQL Server 執行個體之間大量複製資料。您可以使用 bcp 公用程式,將大量資料集匯入 SQL Server 執行個體,或匯出為檔案。

以下是 INOUT 命令的範例:

OUT:使用此命令將資料表中的記錄匯出或轉儲到檔案中:

bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P     password -b 10000

上述程式碼包含下列選項:

  • -n:指定大量複製使用要複製的資料的原生資料類型。
  • -S:指定 bcp 公用程式所連接的 SQL 伺服器執行個體。
  • -U:指定要登入 SQL Server 執行個體的帳戶的使用者名稱。
  • -P:指定 -U 所指定使用者的密碼。
  • -b:指定每批匯入資料的列數。

IN:使用此命令將所有記錄從轉儲檔案匯入到現有的資料表。執行 bcp 命令之前,必須先建立資料表。

bcp dbname.schema_name.table_name in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000

如需詳細資訊,請參閱 Microsoft SQL Server 文件中的 bcp 公用程式


此文章是否有幫助?


您是否需要帳單或技術支援?