Share via


使用 MySQL Workbench 將 Amazon RDS for MySQL 遷移至「適用於 MySQL 的 Azure 資料庫」

適用於: 適用於 MySQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫單一伺服器會發生什麼事?

您可以使用各種公用程式,例如 MySQL Workbench 匯出/匯入、Azure 資料庫移轉服務 (DMS) 和 MySQL 傾印和還原,將 Amazon RDS for MySQL 遷移至「適用於 MySQL 的 Azure 資料庫」。 然而,使用 MySQL Workbench 移轉精靈將 Amazon RDS for MySQL 資料庫移至「適用於 MySQL 的 Azure 資料庫」,既輕鬆又方便。

移轉精靈方便您選取要遷移的結構描述和物件。 還可讓您檢視伺服器記錄,即時發現錯誤和瓶頸。 因此,在移轉過程中偵測到錯誤時,您可以編輯並修改資料表或資料庫結構和物件,然後繼續移轉,不必重新開始。

注意

您也可以使用移轉精靈來遷移其他來源,例如 Microsoft SQL Server、Oracle、PostgreSQL、MariaDB 等,這些已超出本文的討論範圍。

必要條件

開始移轉程序之前,建議先確認已正確設定幾個參數和功能,如下所述。

  • 請確定來源和目標資料庫的字元集相同。

  • 根據您要匯入或遷移的資料量或工作負載,將等候逾時設定為合理的時間。

  • 根據您要匯入或遷移的資料庫大小,將 max_allowed_packet parameter 設定為合理的數量。

  • 確認所有資料表都使用 InnoDB,因為適用於 MySQL 的 Azure 資料庫伺服器僅支援 InnoDB 儲存引擎。

  • 移除、取代或修改包含根使用者或進階使用者 definer 的所有觸發程序、預存程序和其他函式 (適用於 MySQL 的 Azure 資料庫不支援進階使用者權限)。 若要以執行匯入流程的管理使用者名稱來取代 definer,請執行下列命令:

    DELIMITER; ;/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`127.0.0.1`*/ /*!50003
    DELIMITER;
    /* Modified to */
    DELIMITER;
    /*!50003 CREATE*//*!50017 DEFINER=`AdminUserName`@`ServerName`*/ /*!50003
    DELIMITER;
    
    
  • 如果使用者定義函式 (UDF) 在資料庫伺服器上執行,您必須刪除 mysql 資料庫的權限。 若要判斷是否有任何 UDF 在伺服器上執行,請使用下列查詢:

    SELECT * FROM mysql.func;
    

    如果發現有 UDF 正在執行,您可以使用下列查詢來卸除 UDF:

    DROP FUNCTION your_UDFunction;
    
  • 請確定執行工具的伺服器 (最終為匯出位置) 有足夠的磁碟空間和計算能力 (虛擬核心、CPU 和記憶體) 來執行匯出作業,特別是匯出大型資料庫時。

  • 如果工作負載位於防火牆或其他網路安全性階層後方,請在內部部署或 AWS 執行個體與適用於 MySQL 的 Azure 資料庫之間建立路徑。

開始移轉流程

  1. 若要開始移轉流程,請登入 MySQL Workbench,然後選取首頁圖示。

  2. 在左側導覽列中,選取移轉精靈圖示,如下列螢幕擷取畫面所示。

    MySQL Workbench start screen

    移轉精靈的 [概觀] 頁面隨即顯示,如下所示。

    MySQL Workbench Migration Wizard welcome page

  3. 選取 [開啟 ODBC 管理員],查明您是否已安裝適用於 MySQL 伺服器的 ODBC 驅動程式。

    在我們的例子中,您在 [驅動程式] 索引標籤中會看到已安裝兩個 MySQL 伺服器 ODBC 驅動程式。

    ODBC Data Source Administrator page

    如果未安裝 MySQL ODBC 驅動程式,請使用您用來安裝 MySQL Workbench 的 MySQL 安裝程式,安裝驅動程式。 如需有關安裝 MySQL ODBC 驅動程式的詳細資訊,請參閱下列資源:

  4. 關閉 [ODBC 資料來源管理員] 對話方塊,然後繼續移轉流程。

設定來源資料庫伺服器的連線參數

  1. 在 [概觀] 頁面上,選取 [開始移轉]

    [選取來源] 頁面隨即出現。 針對要遷移自哪個 RDBMS,使用此頁面提供相關資訊及連線參數。

  2. 在 [資料庫系統] 欄位中,選取 [MySQL]

  3. 在 [預存連線] 欄位中,選取該 RDBMS 已儲存的其中一個連線設定。

    您可以勾選頁面底部的核取方塊,並提供您喜歡的名稱,以儲存連線。

  4. 在 [連線方法] 欄位中,選取 [標準 TCP/IP]

  5. 在 [主機名稱] 欄位中,指定來源資料庫伺服器的名稱。

  6. 在 [連接埠] 欄位中指定 3306,然後輸入用來連線至伺服器的使用者名稱和密碼。

  7. 在 [資料庫] 欄位中,如果知道要移轉的資料庫,請輸入名稱,否則保留空白。

  8. 選取 [測試連線],檢查 MySQL 伺服器執行個體的連線。

    如果輸入的參數正確,則會出現訊息指出嘗試連線成功。

    Source database connection parameters page

  9. 選取 [下一步]。

設定目標資料庫伺服器的連線參數

  1. 在 [選取目標] 頁面上,就像設定來源伺服器的連線一樣,設定參數來連線至目標 MySQL 伺服器執行個體。

  2. 若要確認連線成功,請選取 [測試連線]

    Target database connection parameters page

  3. 選取 [下一步]。

選取要遷移的結構描述

移轉精靈會與 MySQL 伺服器執行個體通訊,並從來源伺服器擷取結構描述清單。

  1. 選取 [顯示記錄] 以檢視此作業。

    下列螢幕擷取畫面顯示如何從來源資料庫伺服器擷取結構描述。

    Fetch schemas list page

  2. 選取 [下一步],確認已成功擷取所有結構描述。

    下列螢幕擷取畫面顯示已擷取的結構描述清單。

    Schemas selection page

    您只能遷移出現在此清單中的結構描述。

  3. 選取您要遷移的結構描述,然後選取 [下一步]

物件移轉

接下來,指定您要移轉的物件。

  1. 選取 [顯示選取項目],然後在 [可用物件] 下,選取並新增您要遷移的物件。

    物件新增之後會出現在 [要遷移的物件] 下,如下列螢幕擷取畫面所示。

    Source objects selection page

    在此情節中,我們已選取所有資料表物件。

  2. 選取 [下一步]。

編輯資料

在本節中,您可以選擇編輯要遷移的物件。

  1. 在 [手動編輯] 頁面上,請注意右上角的 [檢視] 下拉式功能表。

    Manual Editing selection page

    [檢視] 下拉式方塊包含三個項目:

    • 所有物件 - 顯示所有的物件。 此選項可讓您先手動編輯產生的 SQL,再套用至目標資料庫伺服器。 作法是選取物件,然後選取 [顯示程式碼和訊息]。 您可以看到 (還可編輯!) 產生的 MySQL 程式碼 (對應於所選的物件)。
    • 移轉問題 - 顯示移轉期間發生的任何問題,供您檢閱並確認。
    • 資料行對應 - 顯示資料行對應資訊。 您可以利用此檢視來編輯目標物件的名稱和變更資料行。
  2. 選取 [下一步]。

建立目標資料庫

  1. 選取 [在目標 RDBMS 中建立結構描述] 核取方塊。

    您也可以選擇保留現有的結構描述,而不修改或更新。

    Target Creation Options page

    在本文中,我們已選擇在目標 RDBMS 中建立結構描述,但您也可以選取 [建立 SQL 指令檔] 核取方塊,將檔案儲存在本機電腦上或另作他用。

  2. 選取 [下一步]。

執行 MySQL 指令碼以建立資料庫物件

由於我們已選擇在目標 RDBMS 中建立結構描述,遷移的 SQL 指令碼會在目標 MySQL 伺服器中執行。 您可以檢視其進度,如下列螢幕擷取畫面所示:

Create Schemas page

  1. 結構描述及其物件建立完畢之後,選取 [下一步]

    [建立目標結果] 頁面會顯示已建立的物件清單,並通知在建立時遇到的任何錯誤,如下列螢幕擷取畫面所示。

    Create Target Results page

  2. 檢閱此頁面上的詳細資料,確認一切如預期般完成。

    在本文中,沒有遇到任何錯誤。 如果不需要解決任何錯誤訊息,您可以編輯移轉指令碼。

  3. 在 [物件] 方塊中,選取您要編輯的物件。

  4. 在 [所選物件的 SQL CREATE 指令碼] 下,修改 SQL 指令碼,然後選取 [套用] 以儲存變更。

  5. 選取 [重新建立物件] 以執行指令碼 (包括變更)。

    如果指令碼失敗,您可能需要編輯已產生的指令碼。 接著,您可以手動修正 SQL 指令碼,然後全部重新執行。 在本文中,一切不變,所以指令碼原封不動。

  6. 選取 [下一步]。

傳輸資料

這部分流程從來源 MySQL 伺服器資料庫執行個體,將資料移至新建立的目標 MySQL 資料庫執行個體。 使用 [資料傳輸設定] 頁面來設定此流程。

Data Transfer Setup page

此頁面提供選項來設定資料傳輸。 基於本文目的,我們接受預設值。

  1. 若要開始實際流程來傳輸資料,請選取 [下一步]

    資料傳輸流程的進度隨即出現,如下列螢幕擷取畫面所示。

    Bulk Data Transfer page

    注意

    資料傳輸流程的持續時間與您要移轉的資料庫大小直接有關。 來源資料庫越大,流程耗時越久,較大的資料庫甚至需要數小時。

  2. 傳輸完成後,選取 [下一步]

    [移轉報告] 頁面隨即出現,提供整個流程的摘要報告,如下列螢幕擷取畫面所示:

    Migration Progress Report page

  3. 選取 [完成] 以關閉移轉精靈。

    現在已順利完成移轉。

確認已遷移的結構描述和資料表是否一致

  1. 接下來,登入 MySQL 目標資料庫執行個體,確認已遷移的結構描述和資料表是否與 MySQL 來源資料庫一致。

    在我們的例子中,您可以看到 Amazon RDS for MySQL MyjolieDB 資料庫的所有結構描述 (sakila、moda、items、customer、clothes、world 和 world_x),都已成功移轉至「適用於 MySQL 的 Azure 資料庫」azmysql 執行個體。

  2. 若要確認資料表和資料列計數,請在這兩個執行個體上執行下列查詢:

    SELECT COUNT (*) FROM sakila.actor;

    從下列螢幕擷取畫面中,您可以看到 Amazon RDS MySQL 的資料列計數為 200,與「適用於 MySQL 的 Azure 資料庫」執行個體相符。

    Table and Row size source database

    Table and Row size target database

    雖然可以對每個單一結構描述和資料表執行上述查詢,但如果涉及成千上萬甚至數百萬個資料表,則會很辛苦。 您可以使用下列查詢,改為確認結構描述 (資料庫) 和資料表大小。

  3. 若要檢查資料庫大小,請執行下列查詢:

    SELECT table_schema AS "Database", 
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
    FROM information_schema.TABLES 
    GROUP BY table_schema;
    
  4. 若要檢查資料表大小,請執行下列查詢:

    SELECT table_name AS "Table",
    ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
    FROM information_schema.TABLES
    WHERE table_schema = "database_name"
    ORDER BY (data_length + index_length) DESC;
    

    從下列螢幕擷取畫面中,您可以看到來源 Amazon RDS MySQL 執行個體的結構描述 (資料庫) 大小,與目標「適用於 MySQL 的 Azure 資料庫」執行個體的結構描述相同。

    Database size source database

    Database size target database

    由於兩個執行個體中的結構描述 (資料庫) 大小相同,實在沒必要檢查個別資料表大小。 儘管如此,必要時都可以使用上述查詢來檢查資料表大小。

    您現在已確認移轉順利完成。

下一步