教學課程:透過 Azure 入口網站,使用 DMS 從 MySQL 線上移轉至適用於 MySQL 的 Azure 資料庫線上 - 彈性伺服器
注意
本文包含「從屬」一詞的參考,Microsoft 已不再使用該字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。
您可以使用 Azure 資料庫移轉服務 (DMS) (這是一項完全受控的服務,旨在實現從多個資料庫來源順暢地移轉至 Azure 資料平台) 將內部部署或其他雲端服務 MySQL 伺服器移轉至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。 在本教學課程中,我們將使用 DMS 移轉活動執行從內部部署 MySQL 伺服器到適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的線上移轉 (兩者皆執行 5.7 版)。
注意
DMS 線上移轉現已正式推出。 DMS 支援移轉至 MySQL 5.7 和 8.0 版,也支援從更低版本的 MySQL 伺服器 (v5.6 和更新版本) 移轉至更高版本的伺服器。 此外,DMS 支援跨區域、跨資源群組和跨訂用帳戶移轉,因此您可以為目標伺服器選取不同於來源伺服器指定的區域、資源群組和訂用帳戶。
在本教學課程中,您將了解如何:
- 實作使用 DMS 建立彈性伺服器以加快資料負載的最佳做法。
- 建立及並設定目標彈性伺服器。
- 建立 DMS 執行個體。
- 在 DMS 中建立 MySQL 移轉專案。
- 使用 DMS 移轉 MySQL 結構描述。
- 執行移轉。
- 監視移轉。
- 執行移轉後步驟。
- 實作執行移轉的最佳做法。
必要條件
若要完成本教學課程,您需要:
- 建立或使用現有的 MySQL 執行個體 (來源伺服器)。
- 若要成功完成線上移轉,請確定已備妥下列必要條件:
- 使用您選擇的 MySQL 命令列工具,透過執行命令 SHOW VARIABLES LIKE 'log_bin',驗證來源伺服器上已啟用 log_bin。 如果未啟用 log_bin,請務必先啟用再開始移轉。
- 請確定使用者具有來源伺服器上的 "REPLICATION CLIENT" 和 "REPLICATION SLAVE" 權限,以便讀取和套用間隔記錄。
- 如果您將線上移轉設為目標,則您將必須在來源伺服器上設定 binlog 參數,以確保在複本認可變更之前不會清除 binlog 檔案。 我們建議至少準備兩天來開始。 參數將取決於 MySQL 伺服器的版本。 針對 MySQL 5.7,參數為 expire_logs_days (預設會設定為 0,這不會自動清除)。 針對 MySQL 8.0,參數為 binlog_expire_logs_seconds (預設會設定為 30 天)。 成功完全移轉後,您可以重設該值。
- 若要順利完成結構描述移轉,在來源伺服器上執行移轉的使用者需要下列權限:
- 在來源上伺服器層級的 "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 不支援移轉物件的 DEFINER 子句。 所有在來源上具有 definer 的物件類型都會卸除,並在移轉之後,支援 definer 子句且在結構描述移轉期間建立的所有物件預設 definer 將設定為用來執行移轉的登入。
目前,DMS 僅支援在資料移動過程中移轉結構描述。 如果未選取任何資料移動,則不會進行結構描述移轉。 選取用於結構描述移轉的資料表也會選取該資料表用於資料移動。
線上移轉支援僅限於 ROW binlog 格式。
因為適用於 MySQL 的 Azure 資料庫 - 彈性伺服器不支援混合大小寫資料庫,因此線上移轉不會包含來源上的混合大小寫資料庫。
線上移轉現在支援在移轉至 v8.0 或 v5.7 適用於 MySQL 的 Azure 資料庫彈性伺服器目標伺服器時的 DDL 陳述式複寫。
- 設定 Azure DMS 移轉活動時,支援針對架構移轉選取的資料庫、資料表和架構物件 (檢視、常式、觸發程式) 陳述式複寫。 不會複寫未選取的資料庫、資料表和架構物件的資料定義和管理陳述式。 若選取要移轉的整個伺服器,將會複寫初始載入完成後,在來源伺服器上建立之任何資料表、資料庫和架構物件的陳述式。
- Azure DMS 陳述式複寫支援此處所列的所有資料定義陳述式,但下列命令除外:
- LOGFILE GROUP 陳述式
- SERVER 陳述式
- SPATIAL REFERENCE SYSTEM 陳述式
- TABLESPACE 陳述式
- Azure DMS 陳述式複寫支援這裡所列的所有資料管理 – 帳戶管理陳述式,但下列命令除外:
- 設定預設角色
- 設定密碼
- Azure DMS 陳述式複寫支援這裡列出的所有資料管理 – 資料表維修陳述式,但下列命令除外:
- 修復資料表
- 分析資料表
- CHECKSUM 資料表
- Azure DMS 陳述式或 binlog 複寫不支援下列語法:'CREATE TABLE
b
as SELECT * FROMa
;'。 此 DDL 的複寫會導致下列錯誤:「在 CREATE TABLE 搭配 START TRANSACTION 陳述式之後,僅允許 BINLOG INSERT、COMMIT 和 ROLLBACK 陳述式。
移轉持續時間可能會受後端的計算維護影響,這可能會重設進度。
使用 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 資料庫執行個體》。
設定新的目標彈性伺服器,如下所示︰
執行移轉的使用者需要下列權限:
- 確保使用者在目標伺服器上具有 "REPLICATION_APPLIER" 或 "BINLOG_ADMIN" 權限以套用二進位記錄檔。
- 請確定使用者具有目標伺服器上的 "REPLICATION SLAVE" 權限。
- 請確定使用者具有來源伺服器上的 "REPLICATION CLIENT" 和 "REPLICATION SLAVE" 權限,以便讀取和套用間隔記錄。
- 若要在目標上建立資料表,使用者必須具有 "CREATE" 權限。
- 如果移轉的資料表具有 "DATA DIRECTORY" 或 "INDEX DIRECTORY" 分割選項,使用者必須具有 "FILE" 權限。
- 如果移轉至具有 "UNION" 選項的資料表,使用者必須對於對應至 MERGE 資料表的資料表具有 "SELECT"、"UPDATE" 和 "DELETE" 的權限。
- 如果移轉檢視,您必須具有 "CREATE VIEW" 權限。
請記住,根據檢視的內容,某些權限可能是必要的。 請參閱您版本專屬的 MySQL 文件,以取得 "CREATE VIEW STATEMENT" 的詳細資料。
- 如果移轉事件,使用者必須具有 "EVENT" 權限。
- 如果移轉觸發程序,使用者必須具有 "TRIGGER" 權限。
- 如果移轉常式,使用者必須具有 "CREATE ROUTINE" 權限。
在目標彈性伺服器上設定伺服器參數,如下所示:
- 設定 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] 作為來源伺服器類型,然後選取 [適用於 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]、在 [目標伺服器類型] 選取方塊中,選取 [適用於 MySQL 的 Azure 資料庫 - 彈性伺服器]、在 [移轉活動類型] 選取方塊中,選取 [線上資料移轉],然後選取 [建立及執行活動]。
選取 [僅建立專案],因移轉活動類型只會建立移轉專案; 您稍後可以執行移轉專案。
設定移轉專案
若要設定 DMS 移轉專案,請執行下列步驟。
在 [選取來源] 畫面上,我們必須確定 DMS 位於連線至來源伺服器的 VNet 中。 在這裡,您會將來源伺服器名稱、伺服器連接埠、使用者名稱和密碼輸入至來源伺服器。
選取 [下一步:選取目標>>],接著在 [選取目標] 畫面上,根據訂用帳戶、位置和資源群組找出伺服器。 系統會自動填入使用者名稱,然後提供目標彈性伺服器的密碼。
選取 [下一步:選取資料庫>>],接著在 [選取資料庫] 索引標籤的 [伺服器移轉選項] 底下,選取 [移轉所有適用的資料庫],或在 [選取資料庫]底下,選取您要移轉的伺服器物件。
現在有 [移轉所有適用的資料庫] 選項。 選取時,此選項會移轉所有使用者建立的資料庫和資料表。 因為適用於 MySQL 的 Azure 資料庫 - 彈性伺服器不支援混合大小寫資料庫,因此線上移轉不會包含來源上的混合大小寫資料庫。
在 [選取資料庫] 區段的 [來源資料庫]下,選取要移轉的資料庫。
您指定之資料庫中的非資料表物件將會被移轉,而您未選取的項目將會被跳過。 您只能選取符合來源和目標伺服器上之名稱的來源和目標資料庫。
如果您在來源伺服器上選取的資料庫不存在於目標伺服器上,則會在目標伺服器上建立資料庫。
選取 [下一步:選取資料表>>] 以瀏覽至 [選取資料表] 索引標籤。
在索引標籤填入之前,DMS 會從來源和目標上選取的資料庫擷取資料表,然後判斷資料表是否存在並包含資料。
選取您想要移轉的資料表。
如果選取的來源資料表不存在於目標伺服器,則線上移轉流程會確保資料表結構描述和資料已移轉至目標伺服器。
DMS 會驗證您的輸入,如果驗證通過,您將能夠開始移轉。
設定結構描述移轉後,請選擇 [檢閱並開始移轉]。
如果您嘗試針對失敗的移轉進行疑難排解,您只需要瀏覽至 [設定移轉設定] 索引標籤。
在 [摘要] 索引標籤的 [活動名稱] 文字輸入框中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前所指定的相符。
選取 [開始移轉]。
[移轉活動] 視窗隨即出現,且活動的 [狀態] 為 [正在初始化]。 當資料表移轉開始時,[狀態] 會變更為 [執行中]。
監視移轉
初始負載活動完成後,瀏覽至 [初始負載] 索引標籤,以檢視完成狀態和已完成的資料表數目。
初始負載活動完成後,您會自動瀏覽至 [複寫資料變更] 索引標籤。 您可以監視移轉進度,畫面每隔 30 秒自動重新整理一次。
選取 [重新整理] 以更新顯示,並視需要檢視落後來源秒數。
監視落後來源秒數,一旦接近0,請瀏覽至移轉活動畫面上方的 [開始完全移轉] 功能表,以繼續開始完全移轉。
在您準備好執行完全移轉之前,請遵循完全移轉視窗中的步驟。
完成所有步驟之後,請選取 [確認],然後選取 [套用]。
執行移轉後活動
當移轉完成時,請務必完成下列移轉後活動。
針對目標資料庫執行應用程式的健全性測試,以認證移轉。
更新連接字串,以指向新的彈性伺服器。
在您確定應用程式持續性之後,請刪除來源單一伺服器。
如果您為加速移轉而擴大了目標彈性伺服器,則可根據下表中的詳細資料,依據來源單一伺服器的定價層和虛擬核心,選取目標彈性伺服器的計算大小和計算層,將其調整回原本大小。
單一伺服器定價層 單一伺服器虛擬核心 彈性伺服器計算大小 彈性伺服器計算層 基本 1 可高載 Standard_B1s 基本 2 可高載 Standard_B2s 一般用途 4 一般用途 標準 D4ds_v4 一般用途 8 一般用途 標準 D8ds_v4 若要清除 DMS 資源,請執行下列步驟:
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
從搜尋結果中選取您的移轉服務執行個體,然後選取 [刪除服務]。
在確認對話方塊中的 [鍵入資料庫移轉服務名稱] 文字方塊中,指定執行個體的名稱,然後選取 [刪除]。
移轉最佳做法
執行移轉時,請務必考慮下列最佳做法。
在探索和評估過程中,請採用伺服器 SKU、CPU 使用量、儲存體、資料庫大小和擴充功能,做為一些重要資料,以協助移轉。
在移轉生產環境之前先執行測試移轉:
測試移轉對於確保您涵蓋資料庫移轉的所有層面很重要,包括應用程式測試。 最佳做法是從完全針對測試目的執行移轉開始。 新開始的移轉進入複寫資料變更階段後,只要使用彈性伺服器目標來執行測試工作負載即可。 使用該目標來測試應用程式,以確保預期的效能和結果。 如果您要移轉至較高的 MySQL 版本,請測試應用程式相容性。
測試完成後,您可以移轉生產資料庫。 此時,您必須完成生產移轉的日期和時間。 在理想情況下,目前的應用程式使用量很低。 所有需要參與的利害關係人都應有空並準備就緒。 生產移轉需要密切監視。 若要進行線上移轉,必須先完成複寫,才能執行完全移轉,以避免資料遺失。
重新導向所有相依應用程式以存取新的主要資料庫,並將來源伺服器設為唯讀。 然後,開啟應用程式以供生產環境使用。
應用程式在目標彈性伺服器上開始執行後,請密切監視資料庫效能,以了解是否需要進行效能微調。