教學課程:使用 DMS 將 MySQL 離線移轉至適用於 MySQL 的 Azure 資料庫

您可以使用 Azure 資料庫移轉服務,透過高速資料移轉功能,從外部 MySQL 執行個體順暢地移轉至適用於 MySQL 的 Azure 資料庫。 在本教學課程中,我們會在 Azure 資料庫移轉服務中使用離線移轉活動,將範例資料庫從內部部署的 MySQL 5.7 執行個體移轉至適用於 MySQL 的 Azure 資料庫 (v5.7)。 雖然文章假設來源是 MySQL 資料庫執行個體,並以適用於 MySQL 的 Azure 資料庫為目標,但只要變更來源伺服器名稱和認證,就可以用來從一個適用於 MySQL 的 Azure 資料庫移轉至另一個資料庫。 同時,也支援從較低版本的 MySQL 伺服器 (v5.6 和更新版本) 移轉至更高的版本。

注意

如需此移轉體驗的 PowerShell 型可編寫指令碼版本,請參閱可編寫指令碼離線移轉至適用於 MySQL 的 Azure 資料庫

MySQL 和 Amazon Aurora (以 MySQL 為基礎) 的 Amazon Relational Database Service (RDS) 也支援做為移轉來源。

在本教學課程中,您會了解如何:

  • 建立 DMS 執行個體。
  • 在 DMS 中建立 MySQL 移轉專案。
  • 使用 DMS 移轉 MySQL 結構描述。
  • 執行移轉。
  • 監視移轉。

必要條件

若要完成本教學課程,您需要:

  • 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶

  • 具有 5.7 版的內部部署 MySQL 資料庫。 下載並安裝 MySQL 社群版 5.7。

  • 使用 Azure Resource Manager 部署模型建立 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,以使用 ExpressRouteVPN 為您的內部部署來源伺服器提供站對站連線能力。 如需建立虛擬網路的詳細資訊,請參閱虛擬網路文件,特別是快速入門文章,裡面會提供逐步操作詳細資料。

    在虛擬 networkNet 設定期間,如果您使用 ExpressRoute 搭配與 Microsoft 對等互連的網路,請將下列服務端點新增至將佈建服務的子網路:

    • 目標資料庫端點 (例如,SQL 端點、Azure Cosmos DB 端點等)
    • 儲存體端點
    • 服務匯流排端點

    此為必要設定,因為 Azure 資料庫移轉服務沒有網際網路連線。

  • 確定您虛擬網路的網路安全性群組規則不會封鎖服務匯流排、儲存體和 AzureMonitor 的 ServiceTag 的輸出連接埠 443。 如需虛擬網路 NSG 流量篩選的詳細資訊,請參閱<使用網路安全性群組來篩選網路流量>(機器翻譯) 一文。

  • 開啟您的 Windows 防火牆以允許 Azure 資料庫移轉服務虛擬網路的連線存取來源 MySQL Server (依預設為 TCP 連接埠 3306)。

  • 使用來源資料庫前面的防火牆設備時,您可能必須新增防火牆規則,才能允許來自 Azure 資料庫移轉服務虛擬網路的連線存取來源資料庫,以進行移轉。

  • 建立伺服器層級防火牆規則,或為目標適用於 MySQL 的 Azure 資料庫設定 VNET 服務端點,以允許 Azure 資料庫移轉服務的虛擬網路存取目標資料庫。

  • 來源 MySQL 必須位於支援的 MySQL 社群版上。 若要判斷 MySQL 公用程式或 MySQL Workbench 中的 MySQL 執行個體版本,請執行下列命令:

    SELECT @@VERSION;
    
  • 適用於 MySQL 的 Azure 資料庫僅支援 InnoDB 資料表。 若要將 MyISAM 資料表轉換為 InnoDB,請參閱將資料表從 MyISAM 轉換為 InnoDB 一文

  • 使用者必須具有讀取來源資料庫上資料的權限。

  • 若要順利完成架構移轉,在來源伺服器上執行移轉的使用者需要下列權限:

    • 在來源上伺服器層級的 "SELECT" 權限。
    • 如果移轉檢視,使用者必須在來源伺服器上具有 "SHOW VIEW" 權限,以及在目標伺服器上具有 "CREATE VIEW" 權限。
    • 如果移轉觸發程序,使用者必須在來源和目標伺服器上具有 "TRIGGER" 權限。
    • 如果移轉常式 (程序和/或函數),使用者必須具有在目標上伺服器層級授與的 "CREATE ROUTINE""ALTER ROUTINE" 權限。
    • 如果移轉事件,使用者必須在來源和目標伺服器上具有 "EVENT" 權限。
    • 如果移轉使用者/登入,使用者必須在目標伺服器上具有 “CREATE USER” 權限。
    • 在目標上伺服器層級的 "DROP" 權限,以便卸除可能已經存在的資料表。 例如,重試移轉時。
    • 在目標上伺服器層級的 "REFERENCES" 權限,以便建立具有外部索引鍵的資料表。
    • 如果移轉至 MySQL 8.0,使用者必須在目標伺服器上具有 "SESSION_VARIABLES_ADMIN" 權限。
    • 在目標上伺服器層級的 "CREATE” 權限。
    • 在目標上伺服器層級的 "INSERT” 權限。
    • 在目標上伺服器層級的 "UPDATE” 權限。
    • 在目標上伺服器層級的 "DELETE” 權限。

調整適用於 MySQL 的 Azure 資料庫目標執行個體的大小

若要使用 Azure 資料庫移轉服務準備目標適用於 MySQL 的 Azure 資料庫伺服器,以更快速地載入資料,則建議變更下列伺服器參數和設定。

  • max_allowed_packet – 設定為 1073741824 (也就是 1GB),以防止因為大型資料列而造成任何連線問題。

  • slow_query_log – 設定為 [關閉],以關閉慢速查詢記錄。 這樣便能消除資料載入期間慢速查詢記錄所造成的額外負荷。

  • query_store_capture_mode - 設定為 NONE,以關閉查詢存放區。 這樣便能消除查詢存放區取樣活動所造成的額外負荷。

  • innodb_buffer_pool_size – Innodb_buffer_pool_size 只能藉由擴大適用於 MySQL 的 Azure 資料庫伺服器的計算來增加。 在移轉期間,從入口網站的定價層將伺服器擴大至 64 虛擬核心一般用途 SKU,以提高 innodb_buffer_pool_size。

  • innodb_io_capacity & innodb_io_capacity_max - 在 Azure 入口網站中將伺服器參數變更為 9000,以改善 IO 使用率,將移轉速度最佳化。

  • innodb_write_io_threads & innodb_write_io_threads - 在 Azure 入口網站中將伺服器參數變更為 4,以改善移轉的速度。

  • 擴大儲存層 – 適用於 MySQL 的 Azure 資料庫伺服器的 IOP 會隨著儲存層的增加而逐漸增加。

    • 在 [單一伺服器部署] 選項中,為了加快載入,建議您增加儲存層,以增加佈建的 IOP。
    • 在 [彈性伺服器部署] 選項中,不論儲存體大小,皆建議您調整 (增加或減少) IOPS。
    • 儲存大小只能擴大,而不能縮小。
  • 根據下表中的詳細資料,依據來源單一伺服器的定價層和虛擬核心,選取目標彈性伺服器的計算大小和計算層。

    單一伺服器定價層 單一伺服器虛擬核心 彈性伺服器計算大小 彈性伺服器計算層
    基本 1 1 一般用途 Standard_D16ds_v4
    基本 1 2 一般用途 Standard_D16ds_v4
    一般用途 1 4 一般用途 Standard_D16ds_v4
    一般用途 1 8 一般用途 Standard_D16ds_v4
    一般用途 16 一般用途 Standard_D16ds_v4
    一般用途 32 一般用途 Standard_D32ds_v4
    一般用途 64 一般用途 Standard_D64ds_v4
    記憶體最佳化 4 業務關鍵 Standard_E4ds_v4
    記憶體最佳化 8 業務關鍵 Standard_E8ds_v4
    記憶體最佳化 16 業務關鍵 Standard_E16ds_v4
    記憶體最佳化 32 業務關鍵 Standard_E32ds_v4

    1 對於移轉,請針對目標彈性伺服器選取一般用途 16 個虛擬核心計算,以加快移轉速度。 移轉完成之後,請按照本文稍後執行移轉後活動一節中的計算大小建議,將目標伺服器縮減為所需的計算大小。

完成移轉之後,您可以將伺服器參數和設定還原回您工作負載所需的值。

設定 DMS

部署及設定目標彈性伺服器之後,接下來您必須設定 DMS,將單一伺服器移轉至彈性伺服器。

註冊資源提供者

若要註冊 Microsoft.DataMigration 資源提供者,請執行下列步驟。

  1. 建立第一個 DMS 執行個體之前,請先登入 Azure 入口網站,然後搜尋並選取 [訂用帳戶]

    螢幕擷取畫面,其中顯示從 Azure Marketplace 選取訂用帳戶。

  2. 選取您要用來建立 DMS 執行個體的訂用帳戶,然後選取 [資源提供者]

    螢幕擷取畫面,其中顯示選取 [資源提供者]。

  3. 搜尋「移轉」一詞,然後搜尋 Microsoft.DataMigration,並選取 [註冊]

    螢幕擷取畫面,其中顯示註冊資源提供者。

建立資料庫移轉服務執行個體

  1. 在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]

    Azure Marketplace 的螢幕擷取畫面。

  2. 在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]

    螢幕擷取畫面,其中顯示建立 Azure 資料庫移轉服務執行個體。

  3. [建立移轉服務] 畫面上,指定服務的名稱、訂用帳戶,以及新的或現有的資源群組。

  4. 選取定價層並移至網路畫面。 離線移轉功能僅適用於進階定價層。

    如需成本和定價層的詳細資訊,請參閱定價分頁

    設定 Azure 資料庫移轉服務基本設定的螢幕擷取畫面。

  5. 從清單中選取現有的虛擬網路,或提供要建立的新虛擬網路名稱。 移至 [檢閱 + 建立] 畫面。 您可以選擇性地使用標籤畫面將標籤新增至服務。

    虛擬網路會為 Azure 資料庫移轉服務提供來源 SQL Server 和目標 Azure SQL Database 執行個體的存取權。

    設定 Azure 資料庫移轉服務網路設定的螢幕擷取畫面。

    如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。

  6. 檢閱設定,然後選取 [建立] 以建立服務。

    建立 Azure 資料庫移轉服務的螢幕擷取畫面。

建立移轉專案

建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。

  1. 在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]

    尋找 Azure 資料庫移轉服務所有執行個體的螢幕擷取畫面。

  2. 從搜尋結果中選取您的移轉服務執行個體,然後選取 [+ 新增移轉專案]

    建立新移轉專案的螢幕擷取畫面。

  3. 在 [新增移轉專案] 畫面上指定專案名稱、在 [來源伺服器類型] 選取項目方塊中選取 [MySQL]、在 [目標伺服器類型] 選取項目方塊中選取 [適用於 MySQL 的 Azure 資料庫],然後在 [移轉活動類型] 選取項目方塊,選取 [資料移轉]。 選取 [建立及執行活動]

    建立資料庫移轉服務專案的螢幕擷取畫面。

    或者,您可以選擇 [僅建立專案] 以立即建立移轉專案,並於後續再執行移轉。

設定移轉專案

  1. 在 [選取來源] 畫面上,指定來源 MySQL 執行個體的連線詳細資料,然後選取 [下一步:選取目標]>>

    [新增來源詳細資料] 畫面的螢幕擷取畫面。

  2. 在 [選取目標] 畫面上,指定適用於 MySQL 的 Azure 資料庫目標執行個體的連線詳細資料,然後選取 [下一步:選取資料庫]>>

    [新增目標詳細資料] 畫面的螢幕擷取畫面。

  3. 在 [選取資料庫] 畫面上,對應來源和目標資料庫以進行移轉,然後選取 [下一步:設定移轉設定]>>。 您可以選取 [將來源伺服器設為唯讀] 選項,使來源成為唯讀,但請注意這是伺服器層級設定。 如果選取,則會將整個伺服器而不只是選取的資料庫設定為唯讀。

    如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。

    選取 [資料庫詳細資料] 畫面的螢幕擷取畫面。

  4. 在 [設定移轉設定] 畫面上,選取要加入移轉的資料表,然後選取 [下一步:摘要]>>。 如果目標資料表具有任何資料,預設並不會選取這些資料,但您可以明確選取資料,且在開始移轉之前會加以截斷。

    [選取資料表] 畫面的螢幕擷取畫面。

  5. 在 [摘要] 畫面的 [活動名稱] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前所指定的相符。

    移轉專案摘要的螢幕擷取畫面。

  6. 選取 [開始移轉]。 [移轉活動] 視窗隨即出現,且活動的 [狀態] 為 [正在初始化]。 [狀態] 在資料表移轉開始時會變更為 [執行中]

    執行移轉的螢幕擷取畫面。

監視移轉

  1. 在移轉活動畫面上,選取 [重新整理] 以更新顯示,並查看已完成資料表數目的進度。

  2. 您可以選取 [活動] 畫面上的資料庫名稱,以查看每個資料表在移轉時的狀態。 選取 [重新整理] 以更新顯示。

    監視移轉的螢幕擷取畫面。

完成移轉

  1. 在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [完成] 為止。

    完成移轉的螢幕擷取畫面。

張貼移轉活動

離線移轉中的完全移轉是應用程式相依程序,此程序已超過本文件的範圍,但會指定下列移轉後活動:

  1. 根據應用程式需求建立登入、角色和權限。
  2. 在移轉前步驟期間,重新建立目標資料庫上擷取到的所有觸發程序。
  3. 針對目標資料庫執行應用程式的健全性測試,以認證移轉。

清除資源

如果您不打算繼續使用資料庫移轉服務,則可以使用下列步驟來刪除服務:

  1. 在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]

    尋找所有 DMS 執行個體的螢幕擷取畫面。

  2. 從搜尋結果中選取您的移轉服務執行個體,然後選取 [刪除服務]

    刪除移轉服務的螢幕擷取畫面。

  3. 在確認對話框中,在 [輸入資料庫移轉服務名稱] 文字方塊中輸入服務名稱,然後選取 [刪除]

    確認移轉服務刪除的螢幕擷取畫面。