全部產品
Search
文件中心

Data Transmission Service:SQL Server遷移上雲指南

更新時間:Aug 10, 2024

本文為您介紹SQL Server常見的幾種遷移上雲的方案,您可以根據資料來源的位置、各方案使用的工具、各方案的優勢與限制等,選擇最適合您的上雲方案。

準備工作

  • 已建立規格和儲存空間大於等於源庫的目標RDS SQL Server執行個體。建立方式,請參見建立RDS SQL Server執行個體

    說明

    若您需要使用DTS遷移上雲,請先確認DTS支援的源庫和目標庫。更多資訊,請參見遷移方案概覽

  • 在源和目標庫中分別執行SELECT name, compatibility_level FROM sys.databases; 命令,確認目標庫是否相容源庫。是否相容的判斷標準,請參見相容性層級

  • 請確保源庫和目標庫的安全設定(包括防火牆、白名單、安全性群組等)未限制遷移工具的訪問。

    說明

    若您需要使用DTS遷移上雲,請確保DTS可以正常串連資料庫。更多資訊,請參見添加DTS伺服器的IP位址區段

上雲方案簡介

上雲方案

實現流程

操作步驟

物理備份上雲

使用OSS(手動上雲)

  1. 將資料庫日誌復原模式(backup_type)修改為FULL。

  2. 將全量資料進行備份,並上傳到OSS Bucket(儲存空間)。

  3. 定時備份和上傳增量日誌。

  4. 停止源庫的資料寫入,最後一個增量日誌回放成功後,將業務切換到新資料庫。

SQL Server執行個體層級遷移上雲

說明

若源庫為2008 R2版本,建議升級後再進行操作。

使用DBS和DTS(一鍵上雲)

  1. 部署物理協議網關。

  2. 使用DTS遷移上雲(內部會調用OSS Bucket)。

  3. 停止源庫的資料寫入,最後一個增量日誌回放成功後,將業務切換到新資料庫。

自建SQL Server通過物理網關遷移上雲

邏輯遷移上雲

使用DTS(日誌解析模式)

  1. 使用DTS遷移上雲。

    說明

    SQLServer增量同步處理模式選擇為解析源庫日誌做增量同步處理(不支援堆表)

  2. 停止源庫的資料寫入,最後一個增量日誌回放成功後,將業務切換到新資料庫。

自建SQL Server遷移至RDS SQL Server

使用DTS(混合日誌解析模式)

  1. 使用DTS遷移上雲。

    說明

    SQLServer增量同步處理模式選擇為非堆表用日誌解析增量同步處理,堆表用CDC增量同步處理(混合式日誌解析)

  2. 停止源庫的資料寫入,最後一個增量日誌回放成功後,將業務切換到新資料庫。

使用DTS(輪詢查詢CDC執行個體模式)

  1. 使用DTS遷移上雲。

    說明

    SQLServer增量同步處理模式選擇為輪詢查詢CDC執行個體做增量同步處理

  2. 停止源庫的資料寫入,最後一個增量日誌回放成功後,將業務切換到新資料庫。

其他方案上雲

使用SSMS工具

  1. 停止源庫的資料寫入。

  2. 使用SSMS工具匯出源庫資料。

  3. 使用SSMS工具將匯出的資料匯入到目標庫。

  4. 校正資料一致性後,將業務切換到新資料庫。

使用SSMS遷移上雲

上雲方案對比

上雲方案

方案優勢

主要限制

物理備份上雲

使用OSS(手動上雲)

  • 由於使用的是SQL Server內建的備份和恢複功能,所以支援的情境較多。

  • 遷移速度較快。

  • 可以根據源庫日誌格式,手動修改備份檔案的名稱。

  • 需要手動備份和上傳日誌,操作較為繁瑣。

  • 每次只能完成一個資料庫的遷移上雲。

  • 存在分鐘層級的停服:需要停止源庫的資料寫入,且最後一個增量日誌回放成功後才能切換業務。

  • 不支援由高版本遷移到低版本。

  • 不支援庫表列的映射功能。

使用DBS和DTS(一鍵上雲)

  • 遷移操作在DTS控制台,配置操作簡單方便。

  • 單次遷移支援多個資料庫。

  • 由於使用的是SQL Server內建的備份和恢複功能,所以支援的情境較多。

  • 遷移速度較快。

  • 要求備份日誌格式必須以bak結尾。

  • 存在分鐘層級的停服:需要停止源庫的資料寫入,且最後一個增量日誌回放成功後才能切換業務。

  • 需要在源庫物理機上安裝AliyunDBSAgent。

  • 不支援由高版本遷移到低版本。

  • 不支援庫表列的映射功能。

邏輯遷移上雲

使用DTS(日誌解析模式)

  • 遷移操作在DTS控制台,配置操作簡單方便。

  • 支援不同版本資料庫間的遷移。

  • 支援庫表列映射功能。

  • DTS執行個體含增量任務時,源庫無需停止寫入,支援平滑遷移。

  • 支援第三方雲資料庫遷移到阿里雲。

    例如源庫為Amazon RDS for SQL Server時支援全量遷移,源庫為Azure SQL(非SQL database模式)時支援全量和增量遷移。

  • 僅支援部分DDL,且頻繁的DDL操作(大於100條/h)會影響遷移速率。

  • 源庫日誌量超過10 MB/s、30 GB/h、500 GB/d時,可能會導致任務出現延遲,甚至失敗。

  • 源庫記錄備份頻率超過1次/h時,DTS可能擷取不到本地備份日誌(建議本地磁碟保留備份日誌3天)。

  • DTS會在源庫建立Trigger、DDL儲存表等,用於捕獲DDL變更。

  • 增量遷移過程中需關閉外鍵約束,否則可能會導致任務失敗。

  • 不支援堆表、無主鍵表、壓縮表、含計算資料行表等情境。

  • 無主鍵和無唯一約束的表可能出現重複資料,若需要保留無主鍵或無唯一約束的表,則不建議使用此方案。

  • DTS使用fn_log函數拉取和解析日誌,該函數穩定性不高,若出現預期外的行為,可能會導致任務失敗。

  • 單個DTS任務遷移的資料庫不能超過10個,否則可能會有穩定性和效能問題的風險。

使用DTS(混合日誌解析模式)

  • 遷移操作在DTS控制台,配置操作簡單方便。

  • 支援不同版本資料庫間的遷移。

  • 支援庫表列映射功能。

  • 支援堆表、無主鍵表、壓縮表等屬性工作表。

  • 支援第三方雲資料庫遷移到阿里雲。

    例如源庫為Amazon RDS for SQL Server時支援全量遷移,源庫為Azure SQL(非SQL database模式)時支援全量和增量遷移。

  • 對源庫版本有要求:企業版需要為2008及以上版本,標準版需要為2016SP1及以上版本(不包含2017版本)。

  • 僅支援部分DDL,且頻繁的DDL操作(大於100條/h)會影響遷移速率。

  • 源庫日誌量超過10 MB/s、30 GB/h、500 GB/d時,可能會導致任務出現延遲,甚至失敗。

  • 源庫記錄備份頻率超過1次/h時,DTS可能擷取不到本地備份日誌(建議本地磁碟保留備份日誌3天)。

  • DTS會開啟庫層級CDC和部分表CDC,且會在源庫建立Trigger、DDL儲存表等,用於捕獲DDL變更。

  • 增量遷移過程中需關閉外鍵約束,否則可能會導致任務失敗。

  • 不支援含計算資料行表的情境。

  • 無主鍵和無唯一約束的表可能出現重複資料,若需要保留無主鍵或無唯一約束的表,則不建議使用此方案。

  • DTS使用fn_log函數拉取和解析日誌,該函數穩定性不高,若出現預期外的行為,可能會導致任務失敗。

  • 單個DTS任務遷移的資料庫不能超過10個,否則可能會有穩定性和效能問題的風險。

使用DTS(輪詢查詢CDC執行個體模式)

  • 遷移操作在DTS控制台,配置操作簡單方便。

  • 支援不同版本資料庫間的遷移。

  • 支援庫表列映射功能。

  • 支援第三方雲資料庫遷移到阿里雲。

    例如源庫為Amazon RDS for SQL Server、Azure SQL Database、Google Cloud SQL for SQL Server時支援全量和增量遷移。

  • 增量遷移更加穩定,佔用的網路頻寬更低。

    使用SQL Server原生CDC組件擷取增量資料,無需捕獲源庫的交易記錄。當源庫觸發日誌截斷時,不會影響DTS執行個體的運行。

  • SQL Server on Azure Virtual Machines企業版需要2008或以上版本,標準版需要2016SP1或以上版本(不包含2017版本)。

  • DTS執行個體使用的源庫帳號需具備開啟庫層級和表層級CDC的許可權。開啟庫層級CDC需要使用sysadmin角色許可權的帳號,開啟表層級CDC需要高許可權帳號。

    說明
    • Azure SQL Database控制台提供的最高許可權帳號(伺服器管理員)滿足要求。其中基於vCore購買模型的資料庫,所有規格均支援開啟CDC;基於DTU購買模型的資料庫,規格需要為S3及以上才支援開啟CDC。

    • Amazon RDS for SQL Server的高許可權帳號滿足要求,支援為預存程序開啟庫層級的CDC。

  • 源庫待遷移表的數量不能超過1000張,否則可能會導致任務延遲或不穩定。

  • 單個DTS任務遷移的資料庫不能超過10個,否則可能會有穩定性和效能問題的風險。

  • 無主鍵和無唯一約束的表可能出現重複資料,若需要保留無主鍵或無唯一約束的表,則不建議使用此方案。

  • 增量資料移轉約有10秒的延遲。

  • 不支援連續執行加減列操作(一分鐘內執行超過兩次加列或減列的DDL),否則可能會導致任務失敗。

  • 不支援對源庫CDC執行個體(CDC Instance)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 在遷移多庫多表的情境,可能會有穩定性和效能問題的風險。

其他方案上雲

使用SSMS工具

操作過程簡單穩定,資料一致性風險小。

  • 需要停止源庫的資料寫入,否則可能會導致資料不一致。

  • 需要自行使用SSMS工具操作。

上雲方案選擇

重要

若資料來源不支援增量遷移,則需要在進行上雲操作之前停止源庫的資料寫入。

資料來源

是否支援增量遷移

可選上雲方案

推薦方案

自建SQL Server

  • 使用OSS物理備份手動上雲

  • 使用DBS和DTS物理備份一鍵上雲

  • 使用DTS邏輯遷移上雲

使用DBS和DTS物理備份一鍵上雲,詳情請參見自建SQL Server通過物理網關遷移上雲

Azure SQL Database

  • 使用DTS邏輯遷移上雲

    說明

    增量資料需使用輪詢查詢CDC執行個體做增量同步處理模式進行遷移。

  • 使用RDS一站式上雲

  • 使用SSMS工具上雲

使用RDS一站式上雲或使用DTS邏輯遷移上雲,詳情請參見Azure平台的SQL Server遷移至RDS SQL Server

Azure SQL Managed Instance

SQL Server on Azure Virtual Machines

  • 使用DTS邏輯遷移上雲

    說明

    增量資料需使用輪詢查詢CDC執行個體做增量同步處理模式進行遷移。

  • 使用RDS一站式上雲

  • 使用SSMS工具上雲

  • 使用OSS物理備份手動上雲

Amazon RDS for SQL Server

  • 使用DTS邏輯遷移上雲

    說明

    增量資料需使用輪詢查詢CDC執行個體做增量同步處理模式進行遷移。

  • 使用RDS一站式上雲

  • 使用SSMS工具上雲

  • 使用OSS物理備份手動上雲

使用RDS一站式上雲或使用DTS邏輯遷移上雲,詳情請參見AWS平台的SQL Server遷移至RDS SQL Server

華為雲RDS SQL Server

  • 使用SSMS工具上雲

  • 使用DTS邏輯遷移上雲(全量)

  • 使用OSS物理備份手動上雲(全量)

使用OSS物理備份手動全量上雲,詳情請參見全量備份資料上雲(SQL Server 2008 R2雲端硬碟、2012及以上版本)

說明

騰訊ApsaraDB for SQL Server

  • 使用DTS邏輯遷移上雲

  • 使用OSS物理備份手動上雲

使用DTS邏輯遷移上雲,詳情請參見自建SQL Server遷移至RDS SQL Server

使用SSMS工具上雲

Google Cloud SQL for SQL Server

  • 使用SSMS工具上雲

  • 使用DTS邏輯遷移上雲

    說明

    增量資料需使用輪詢查詢CDC執行個體做增量同步處理模式進行遷移。

使用DTS邏輯遷移上雲,詳情請參見自建SQL Server遷移至RDS SQL Server

後續操作

資料校正

SQL Server遷移上雲後,通常需要校正資料是否已經全量遷移到RDS SQL Server執行個體,您可以根據實際情況進行校正。如下為兩種常見校正方式:

根據核心資料校正

您可以按照日期或自增ID進行排序,以驗證最新業務資料是否已經正確遷移。例如,核心業務表Orders中包含OrderID(自增ID)和OrderDate(日期)等欄位,可以使用如下語句進行查詢:

-- 來源資料庫執行個體中的SQL查詢
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;

-- 目標資料庫執行個體中的SQL查詢
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;

使用DTS全量校正

DTS支援在不停服的情況下對源庫和目標庫進行校正。您可以使用DTS建立一個全量校正任務,以校正資料是否已經全量遷移。更多資訊,請參見配置資料校正