跳至內容

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

3 分的閱讀內容
0

我想將資料庫從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或內部部署 Microsoft SQL Server 執行個體移轉到的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 執行個體。

簡短說明

請使用以下任一方法遷移資料庫:

  • 原生 SQL Server 備份與還原
  • AWS Database Migration Service (AWS DMS)
  • 交易式複寫
  • 備份套件 (.bacpac) 檔案
  • SQL Server 產生和發佈指令碼精靈
  • SQL Server 匯入和匯出精靈
  • SQL Server 大量複製程式 (bcp) 公用程式

遷移所需時間和停機時間取決於您採用的遷移方法。如需更多資訊,請參閱遷移至 Amazon RDS for SQL Server 的最佳實務。

解決方法

原生 SQL Server 備份與還原

原生備份與還原的速度比採用複寫的方法慢,但限制可能較少。

請完成以下步驟:

  1. 建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體,用於儲存內部部署或 EC2 執行個體的備份。Amazon S3 儲存貯體與 RDS for SQL Server 執行個體必須位於相同的 AWS 區域。

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

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

  4. 建立內部部署或 EC2 執行個體的備份,然後將備份移至 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';

    注意: 將 database_name 替換為資料庫名稱,將 bucket_name 替換為儲存貯體名稱,並將 file_name_and_extension 替換為檔案名稱。

  6. 執行以下指令碼,追蹤備份狀態:

    exec msdb.dbo.rds_task_status;

如果任務失敗,請檢查輸出中的 task_info 資料欄是否有錯誤訊息。請在 Amazon RDS 問題的疑難排解資料表中查詢錯誤訊息。

注意: 您可以備份及還原差異備份。您也可以還原日誌,將資料庫復原至特定時間點。

AWS DMS

請完成以下步驟:

  1. 若要將 SQL Server 用作 AWS DMS 的來源或目標,請完成先決條件並檢閱相關限制。
  2. 建立 AWS DMS 複寫執行個體。
  3. 使用 AWS DMS 建立來源端點和目標端點。
  4. 建立遷移任務。

交易式複寫

您可以設定從內部部署或 EC2 SQL Server 執行個體至 RDS for SQL Server 執行個體的交易式複寫。不過,您只能將 RDS for SQL Server 執行個體設為訂閱用戶。此外,您只能將內部部署或 EC2 SQL Server 執行個體設為使用推送訂閱的發布者或散發者。

注意: 交易式複寫依賴 EC2 主機名稱,而該名稱可能會在 RDS for SQL Server 中變更。基於這項限制,最佳實務是僅使用交易式複寫,將資料一次性遷移至 RDS for SQL Server 執行個體。

備份套件 (.bacpac) 檔案

.bacpac 檔案包含複製的中繼資料,以及壓縮至單一檔案的資料。對於小於 200 GB 的資料庫,最佳實務是使用 .bacpack 檔案。您可以使用匯出/匯入或 SQLPackage.exe (命令列) 公用程式建立 .bacpac 檔案。如需 .bacpac 檔案的詳細資訊,請參閱使用 bacpac 方法將 SQL Server 資料庫從 Azure SQL 資料庫遷移至 Amazon RDS for SQL Server。

SQL Server 產生和發佈指令碼精靈

如果資料庫小於 1 GB,您可以使用產生和發佈指令碼精靈。對於較大的資料庫,您可以使用匯入和匯出精靈或大量複製方法,編寫資料庫結構描述的指令碼。如需產生和發佈指令碼精靈的詳細資訊,請參閱 Microsoft SQL Server 文件中的操作說明: 產生指令碼 (SQL Server Management Studio)。

注意: 確認您已選取 Set Scripting Option (設定指令碼選項) 頁面上的 Save scripts to specific location (將指令碼儲存至特定位置) 和 Advanced (進階)。Advanced (進階) 設定提供其他選項,讓您在匯入和匯出期間包含或排除資料表中的物件。

SQL Server 匯入和匯出精靈

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

執行匯入和匯出精靈前,請確認該精靈可以存取您的網路,並設定安全群組權限。請參閱 Microsoft Learn 網站上的我需要哪些權限?

如需匯入和匯出精靈的詳細資訊,請參閱 Microsoft Learn 網站上的操作說明: 執行 SQL Server 匯入和匯出精靈。

執行匯入和匯出精靈時,請為目的地 RDS for SQL Server 執行個體選擇以下選項:

  • 在 Server Name (伺服器名稱),輸入 Amazon RDS 資料庫執行個體的端點名稱。
  • 在 Authentication mode (驗證模式),選擇 SQL Server Authentication (SQL Server 驗證)。
  • 在 Username (使用者名稱) 和 Password (密碼),輸入您在 RDS for SQL Server 執行個體中建立的主要使用者。

SQL Server bcp 公用程式

使用命令列公用程式,在 SQL Server 執行個體之間大量匯入大型資料集,或將資料匯出至檔案。您可以使用 bcp 公用程式,將大型資料集匯入 SQL Server 執行個體或匯出至檔案。

以下是 in 和 out 命令的範例:

out

執行以下 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 Server 執行個體。
  • -U: 指定用於登入 SQL Server 執行個體的 AWS 帳戶使用者名稱。
  • -P: 指定 -U 所指定使用者的密碼。
  • -b: 指定每批匯入資料的資料列數。

in

執行以下 in 命令,將傾印檔案中的所有記錄匯入資料表。

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 Learn 網站上的 bcp 公用程式。

AWS 官方已更新 8 個月前