教學課程:透過 Azure 入口網站,使用 DMS 將「適用於 MySQL 的 Azure 資料庫 - 單一伺服器」離線移轉至彈性伺服器
您可以使用 Azure 資料庫移轉服務 (DMS) 將適用於 MySQL 的 Azure 資料庫 – 單一伺服器的執行個體移轉至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。其中,Azure 資料庫移轉服務是一個完全受控的服務,能夠從多個資料庫來源無縫移轉到 Azure 資料平台。 在本教學課程中,我們將使用 DMS 移轉活動,將範例資料庫從適用於 MySQL 的 Azure 資料庫單一伺服器,離線移轉至 MySQL 彈性伺服器 (兩者皆執行 5.7 版)。
DMS 支援從較低的 MySQL 伺服器版本 (v5.6 和更新版本) 移轉至更高的版本。 此外,DMS 支援跨區域、跨資源群組和跨訂用帳戶移轉,因此您可以為目標伺服器選取不同於來源伺服器指定的區域、資源群組和訂用帳戶。
在本教學課程中,您將了解如何:
- 實作使用 DMS 建立彈性伺服器以加快資料負載的最佳做法。
- 建立及並設定目標彈性伺服器。
- 建立 DMS 執行個體。
- 在 DMS 中建立 MySQL 移轉專案。
- 使用 DMS 移轉 MySQL 結構描述。
- 執行移轉。
- 監視移轉。
- 執行移轉後步驟。
- 實作執行移轉的最佳做法。
必要條件
若要完成本教學課程,您需要:
建立或使用適用於 MySQL 的 Azure 資料庫 - 單一伺服器 (來源伺服器) 的現有執行個體。
若要順利完成架構移轉,在來源伺服器上執行移轉的使用者需要下列權限:
- 在來源上伺服器層級的 "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” 權限。
限制
當您準備移轉時,請務必考慮下列限制。
移轉非資料表物件時,DMS 不支援重新命名資料庫。
當移轉至已啟用 bin_log 的目標伺服器時,請務必啟用 log_bin_trust_function_creators 以允許建立常式和觸發程序。
移轉結構描述時,DMS 不支援在目標伺服器上建立資料庫。
目前,DMS 不支援移轉物件的 DEFINER 子句。 所有在來源上具有 definer 的物件類型都會卸除,並在移轉之後,資料表的預設 definer 將設定為用來執行移轉的登入。
目前,DMS 僅支援在資料移動過程中移轉結構描述。 如果未選取任何資料移動,則不會進行結構描述移轉。 選取用於結構描述移轉的資料表也會選取該資料表用於資料移動。
使用 DMS 建立彈性伺服器以加快資料載入速度的最佳做法
DMS 支援跨區域、跨資源群組以及跨訂用帳戶移轉,因此您可以隨意為目標彈性伺服器選取適當的區域、資源群組和訂用帳戶。 建立目標彈性伺服器之前,請考慮下列設定指引以協助確保使用 DMS 加快資料載入的速度。
根據下表中的詳細資料,依據來源單一伺服器的定價層和虛擬核心,選取目標彈性伺服器的計算大小和計算層。
單一伺服器定價層 單一伺服器虛擬核心 彈性伺服器計算大小 彈性伺服器計算層 基本 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 個虛擬核心計算,以加快移轉速度。 移轉完成之後,請按照本文稍後執行移轉後活動一節中的計算大小建議,將目標伺服器縮減為所需的計算大小。
目標彈性伺服器的 MySQL 版本必須大於或等於來源單一伺服器的版本。
除非您需要在特定區域中部署目標彈性伺服器,否則請將可用性區域參數的值設定為「無喜好設定」。
針對網路連線,在 [網路] 索引標籤上,如果來源單一伺服器已設定私人端點或私人連結,請選取 [私人存取];否則,請選取 [公用存取]。
將所有防火牆規則從來源單一伺服器複製到目標彈性伺服器。
在建立期間,將所有名稱/值標籤從單一伺服器複製到彈性伺服器。
建立及並設定目標彈性伺服器
請記住這些最佳做法,建立您的目標彈性伺服器,接著進行設定。
建立目標彈性伺服器。 如需了解引導式步驟,請參閱快速入門《使用 Azure 入口網站建立適用於 MySQL 的 Azure 資料庫執行個體》。
在設定新建立的目標彈性伺服器旁,請依照下列方式繼續進行:
- 執行移轉的使用者需要下列權限:
- 若要在目標上建立資料表,使用者必須具有 "CREATE" 權限。
- 如果移轉至具有 "UNION" 選項的資料表,使用者必須對於對應至 MERGE 資料表的資料表具有 "SELECT"、"UPDATE" 和 "DELETE" 的權限。
- 如果移轉檢視,您必須具有 "CREATE VIEW" 權限。 請記住,根據檢視的內容,某些權限可能是必要的。 請參閱您版本專屬的 MySQL 文件,以取得 "CREATE VIEW STATEMENT" 的詳細資料
- 如果移轉事件,使用者必須具有 "EVENT" 權限。
- 如果移轉觸發程序,使用者必須具有 "TRIGGER" 權限。
- 如果移轉常式,使用者必須具有 "CREATE ROUTINE" 權限。
- 建立目標資料庫,但不需要填入資料表/檢視表等等。
- 在開始移轉之前,請先設定適當的字元、定序,以及任何其他適用的結構描述設定,因為這可能會影響某些物件定義中的 DEFAULT 集合。
- 此外,如果移轉非資料表物件,請務必使用與來源上所使用目標結構描述相同的名稱。
- 在目標彈性伺服器上設定伺服器參數,如下所示:
- 設定 TLS 版本和 require_secure_transport 伺服器參數,以符合來源伺服器上的值。
- 設定 sql_mode 伺服器參數,以符合來源伺服器上的值。
- 在目標伺服器上設定伺服器參數,以符合在來源伺服器上使用的任何非預設值。
- 若要確保使用 DMS 時加快資料負載,請如所述設定下列伺服器參數。
- max_allowed_packet – 設定為 1073741824 (也就是 1 GB),以防止因為大型資料列而造成任何連線問題。
- slow_query_log – 設定為 [關閉],以關閉慢速查詢記錄。 這樣便能消除資料載入期間慢速查詢記錄所造成的額外負荷。
- 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 - 在 Azure 入口網站中將伺服器參數變更為 4,以改善移轉的速度。
- 設定目標伺服器上的複本以符合來源伺服器上的複本。
- 將下列伺服器管理功能從來源單一伺服器複寫到目標彈性伺服器:
- 角色指派、角色、否定性指派、傳統系統管理員、存取控制 (IAM)
- 鎖定 (唯讀和刪除)
- 警示
- 工作
- 資源健康狀態警示
- 執行移轉的使用者需要下列權限:
設定 DMS
部署及設定目標彈性伺服器之後,接下來您必須設定 DMS,將單一伺服器移轉至彈性伺服器。
註冊資源提供者
若要註冊 Microsoft.DataMigration 資源提供者,請執行下列步驟。
建立第一個 DMS 執行個體之前,請先登入 Azure 入口網站,然後搜尋並選取 [訂用帳戶]。
選取您要用來建立 DMS 執行個體的訂用帳戶,然後選取 [資源提供者]。
搜尋「移轉」一詞,然後搜尋 Microsoft.DataMigration,並選取 [註冊]。
建立資料庫移轉服務 (DMS) 執行個體
在 Azure 入口網站中,選取 [+ 建立資源],搜尋 [Azure 資料庫移轉服務] 一詞,然後從下拉式清單選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]。
在 [選取移轉案例和資料庫移轉服務] 頁面的 [移轉案例]下,選取 [適用於 MySQL 的 Azure 資料庫-單一伺服器] 作為來源伺服器類型,然後選取 [適用於 MySQL 的 Azure 資料庫] 作為目標伺服器類型,接著選取 [選取]。
在 [建立移轉服務] 頁面上,於 [基本] 索引標籤的 [專案詳細資料] 下,選取適當的訂用帳戶,然後選取現有的資源群組或建立新的資源群組。
在 [執行個體詳細資料] 下,指定服務的名稱、選取區域,然後確認已選取 Azure 做為服務模式。
在 [定價層] 右側,選取 [設定層]。
在 [設定] 頁面上,為您的 DMS 執行個體選取具有 4 個虛擬核心的 [進階] 定價層,然後選取 [套用]。
在建立 DMS 服務後至開始產生費用前的 6 個月 (183 天) 內,可免費使用 DMS 進階 4 個 vCore。 如需 DMS 成本和定價層的詳細資訊,請參閱定價分頁。
接下來,我們需要指定 VNet,以提供 DMS 執行個體對來源單一伺服器和目標彈性伺服器的存取權。
在 [建立移轉服務] 頁面上,選取 [下一步:網路]>>。
在 [網路] 索引標籤上,從清單中選取現有的 VNet,或提供要建立的新 VNet 名稱,然後選取 [檢閱 + 建立]。
如需詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。
您的 VNet 必須設定為同時存取來源單一伺服器和目標彈性伺服器,因此請務必:
建立伺服器層級防火牆規則,或為來源和目標適用於 MySQL 的 Azure 資料庫伺服器設定 VNET 服務端點,以允許 Azure 資料庫移轉服務的 VNet存取來源和目標資料庫。
請確定您的 VNet 網路安全性群組 (NSG) 規則不會封鎖 ServiceBus、儲存體和 Azure 監視器 ServiceTag 的輸出連接埠 443。 如需 VNet NSG 流量篩選的詳細資訊,請參閱使用網路安全性群組來篩選網路流量。
如果您想要將標籤新增至服務,請先選取 [下一步:標籤] 以先移至 [標籤] 索引標籤。 新增標籤至服務是選擇性的。
瀏覽至 [檢閱 + 建立] 索引標籤、檢閱設定、檢視字詞,然後選取 [建立]。
DMS 執行個體的部署現在開始。 部署進行中的訊息出現幾分鐘,然後訊息會變更為您的部署已完成。
選取 [前往資源] 。
從資源概觀頁面識別 DMS 執行個體的 IP 位址,並為來源單一伺服器和目標彈性伺服器建立防火牆規則,以列出 DMS 執行個體的 IP 位址。
建立移轉專案
若要建立移轉專案,請執行下列步驟。
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
在搜尋結果中,選取您建立的 DMS 執行個體,然後選取 [+ 新移轉專案]。
在 [新移轉專案] 分頁上指定專案名稱、在 [來源伺服器類型] 選取項目方塊中選取 [適用於 MySQL 的 Azure 資料庫 - 單一伺服器]、在 [目標伺服器類型] 選取項目方塊中選取 [適用於 MySQL 的 Azure 資料庫]、在 [移轉活動類型] 選取項目方塊中選取 [離線資料移轉],然後選取 [建立並執行活動]。
選取 [僅建立專案],因移轉活動類型只會建立移轉專案; 您稍後可以執行移轉專案。
設定移轉專案
若要設定 DMS 移轉專案,請執行下列步驟。
若要繼續進行離線移轉,在畫面上設定 [選取來源] 之前,請開啟新的視窗索引標籤,然後瀏覽至 Azure 入口網站上來源伺服器的 [概觀] 頁面,然後前往 [伺服器參數] 刀鋒視窗。 將來源伺服器的 read_only 伺服器參數值設定為 [開啟]。
在開始移轉之前,藉由更新伺服器參數,將來源伺服器設定為唯讀模式,以防止在移轉期間於來源伺服器上執行寫入/刪除作業,這可確保目標資料庫在移轉來源時的資料完整性。
或者,如果您正在執行線上移轉,您會在 [選取來源] 畫面上選取 [啟用交易一致性] 核取方塊。 如需一致備份的詳細資訊,請參閱《MySQL 至適用於 MySQL 的 Azure 資料庫的資料移轉 - MySQL 一致性快照集》。
瀏覽回移轉專案設定畫面,然後在 [選取來源] 畫面上,指定來源 MySQL 執行個體的連線詳細資料。
選取 [下一步:選取目標>>],然後在 [選取目標] 畫面上,指定目標彈性伺服器的連線詳細資料。
選取 [下一步:選取資料庫>>],接著在 [選取資料庫] 索引標籤的 [預覽] 下選取伺服器物件,然後選取您要移轉的伺服器物件。
在 [選取資料庫] 區段的 [來源資料庫]下,選取要移轉的資料庫。
您指定之資料庫中的非資料表物件將會被移轉,而您未選取的項目將會被跳過。
選取 [下一步:選取資料庫>>] 以瀏覽至 [選取資料表] 索引標籤。
在索引標籤填入之前,DMS 會從來源和目標上選取的資料庫擷取資料表,然後判斷資料表是否存在並包含資料。
選取您想要移轉的資料表。
如果您在來源資料庫中選取目標資料庫上不存在的資料表,則預設會選取 [移轉結構描述] 底下的方塊。 對於確實存在於目標資料庫中的資料表,附註指出選取的資料表已經包含且將會被截斷。 此外,如果目標伺服器上的資料表結構描述不符合來源上的結構描述,則會在移轉繼續之前卸除該資料表。
DMS 會驗證您的輸入,如果驗證通過,您將能夠開始移轉。
設定結構描述移轉後,請選擇 [檢閱並開始移轉]。
注意
如果您嘗試針對失敗的移轉進行疑難排解,您只需要瀏覽至 [設定移轉設定] 索引標籤。
在 [摘要] 索引標籤的 [活動名稱] 文字輸入框中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前所指定的相符。
選取 [開始移轉]。
[移轉活動] 視窗隨即出現,且活動的 [狀態] 為 [正在初始化]。 當資料表移轉開始時,[狀態] 會變更為 [執行中]。
監視移轉
在移轉活動畫面上,選取 [重新整理] 以更新顯示,並檢視進度與已完成資料表的數目。
若要查看移轉期間每個資料表的狀態,請選取資料庫名稱,然後選取 [重新整理] 以更新顯示。
選取 [重新整理] 以更新顯示,直到移轉的狀態顯示為 [已完成] 為止。
執行移轉後活動
移轉完成時,請務必完成下列移轉後活動。
針對目標資料庫執行應用程式的健全性測試,以認證移轉。
更新連接字串以指向新的目標彈性伺服器。
在您確定應用程式持續性之後,請刪除來源單一伺服器。
如果您擴大目標彈性伺服器以加快移轉速度,請根據下表中來源單一伺服器定價層與虛擬核心的詳細資料,選取目標彈性伺服器的計算大小和計算層級,以調整目標彈性伺服器。
單一伺服器定價層 單一伺服器虛擬核心 彈性伺服器計算大小 彈性伺服器計算層 基本 1 可高載 Standard_B1s 基本 2 可高載 Standard_B2s 一般用途 4 一般用途 標準 D4ds_v4 一般用途 8 一般用途 標準 D8ds_v4 清除資料移轉服務資源:
- 在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
- 從搜尋結果中選取您的移轉服務執行個體,然後選取 [刪除服務]。
- 在確認對話方塊的 [輸入資料庫移轉服務名稱] 文字方塊中,指定服務的名稱,然後選取 [刪除]。
移轉最佳做法
執行移轉時,請務必記住下列最佳做法。
在探索和評估過程中,請採用伺服器 SKU、CPU 使用量、儲存體、資料庫大小和擴充功能,做為一些重要資料,以協助移轉。
規劃每個資料庫的移轉模式。 針對較簡單的移轉和較小的資料庫,請考慮使用離線模式。
在移轉生產環境之前先執行測試移轉:
- 測試移轉對於確保您涵蓋資料庫移轉的所有層面十分重要,包括應用程式測試。 如果您要移轉至較高的 MySQL 版本,請測試應用程式相容性。
- 測試完成後,您可以移轉生產資料庫。 此時,您必須完成生產移轉的日期和時間。 在理想情況下,目前的應用程式使用量很低。 所有需要參與的利害關係人都應有空並準備就緒。 生產移轉需要密切監視。
重新導向所有相依應用程式以存取新的主要資料庫,並開啟應用程式以供生產環境使用。
應用程式開始在目標彈性伺服器目標上執行之後,請密切監視資料庫效能,以查看是否需要進行效能微調。