移轉的方法

已完成

您可以採用許多不同的方法來進行資料庫移轉,例如線上或離線移轉、備份和還原移轉,或使用自訂 SQL 程式碼或指令碼進行移轉。 每個方法都有其最適合的某些商務案例。

例如,在您的新創公司中,供應商通訊資料庫很重要,而您想要嘗試在不中斷使用者服務的情況下進行遷移。 公司的這個部門全年運作無休,當您可讓資料庫離線時,很少有可預測的無干擾時間。 相較之下,電腦輔助設計 (CAD) 系統只在一周的工作日內使用,因此您可以在週末將其離線,並遷移至 Azure。

在此,您將了解可選取用來執行移轉的方法、技術和工具。

使用匯出和匯入的時機

匯出和匯入技術可讓您控制在移轉中移動的資料和結構描述。 如果您想要選取要將哪些資料移轉至新的資料庫,並可能在移轉期間清除或修改資料,請使用匯出和匯入工具。

考慮使用匯出和匯入技術:

  • 當您想要在內部部署資料庫中選擇資料表的子集,以遷移至雲端資料庫。

  • 當您想要遷移資料庫物件 (例如限制式、檢視、函式、程序和觸發程序),以及控制如何在雲端資料庫中設定這些物件。

  • 當您想要從 MySQL、MariaDB 和 PostgreSQL 以外的外部來源匯入資料時。

例如,您可以考慮在下列案例中匯出和匯入:

  • 您想要執行分次移轉,在移轉銷售支援工作負載前,先將行銷工作負載移轉至雲端並進行測試。 這兩個工作負載都會使用內部部署系統中 SalesDB 資料庫的資料表。 您想要在專案的第一階段中僅遷移行銷資料表,在第二階段中僅遷移銷售資料表。

  • 您的內部部署資料是舊的,並且包含與目前業務相關和不相關的混合資料。 您希望有機會移除舊資料,並考慮更簡化的資料庫結構描述。

  • 您有一個包含產品相關資料的大型試算表。 您想要將此資料遷移至雲端資料庫。

規劃匯出和匯入移轉

使用匯出和匯入的優點是您對要遷移的資料有額外的控制層級。 不過,缺點是您必須更仔細地規劃,以確保包含所有需要的物件。

請確定您了解將如何遷移下列物件:

  • 資料庫結構描述。
  • 包含主索引鍵、外部索引鍵和索引的限制式。
  • 檢視、函式、程序和觸發程序。
  • 使用者帳戶和權限。

適用於 MySQL 和 MariaDB 的匯出與匯入

您可以使用 SQL 指令碼,從某個資料庫執行選擇性匯出和匯入至另一個資料庫。 但是,如果您的內部部署資料庫是在 MySQL 或 MariaDB 中,有數個工具可以提供協助,包括:

  • MySQL Workbench。 這是一個熱門的資料庫設計工具,具有 Oracle Corporation 開發的圖形化使用者介面 (GUI)。 此工具包含資料匯出工具,具有彈性的資料選擇選項。

  • Toad Edge。 這是 Quest 開發的競爭工具組。 您可以使用它從 MySQL 和 PostgreSQL 資料庫匯出和匯入資料。

  • Navicat。 此資料庫管理 GUI 工具也與 MariaDB 資料庫相容。

  • mysqlimport。 此命令列工具可以從文字檔匯入資料。

重要

適用於 MySQL 的 Azure 資料庫和適用於 MariaDB 的 Azure 資料庫僅支援 InnoDB 儲存引擎。 如果您有任何使用其他引擎 (例如 MyISAM 引擎) 的資料表,則必須先將其轉換成 InnoDB,然後再遷移至 Azure。

PostgreSQL 匯出和匯入

PostgreSQL 提供下列工具,可供您用來匯出和匯入資料:

  • pgAdmin. 這是適用於 PostgreSQL 管理員的 GUI 公用程式。 它提供用來匯出和匯入資料的介面。

  • pg_dump. 這是一種命令列工具,可供您用來匯出各種格式的資料庫,包括測試。 您可以先編輯產生的 .sql 檔案,然後再使用 psql 公用程式來匯入這些檔案。

  • Toad Edge。 這是您搭配 MySQL 使用的相同公用程式。

備份和還原

備份和還原作業通常是為了保護資料庫免於災難而進行。 對資料庫進行精確的複製並儲存。 如果災害損毀工作複本,則會還原備份的複本,業務可正常繼續進行。

藉由還原至不同的位置,您可以使用備份將完整的資料庫遷移到另一個位置,例如雲端中的資料庫。

使用備份和還原的時機

備份工具可建立簡單且精確的資料庫複本。 當您在雲端資料庫中還原時,會取得與您在內部部署系統中完全相同的資料和結構描述。 使用備份和還原來遷移資料庫:

  • 當您想要在一項作業中遷移整個資料庫或一組資料庫時。

  • 當您不需要在移轉期間對資料、結構描述或其他資料庫物件進行任何修改時。

在下列情況,您可以考慮使用備份和還原來執行移轉:

  • 您有單一資料庫系統,想要在盡可能不修改的情況下,隨即轉移到雲端。

  • 您想要在具有多個資料庫的系統上執行分次移轉。 完整資料庫支援每個工作負載。

當您將資料庫從備份檔案還原到雲端位置時,請考慮必須跨網路傳送到雲端資料庫的資料量。 若要將資料傳輸最佳化,請將備份的資料庫複製到與目的地資料庫相同區域中的虛擬機器,並從該處還原。 此還原比使用內部部署備份檔案更快,而且較不可能造成網路頻寬的爭用。

規劃在 MySQL 和 MariaDB 上備份及還原

若要在內部部署伺服器上備份資料庫,請在命令列使用 mysqldump 工具。 這會建立一個 .sql 檔案,您可以透過指令碼的形式將該檔案傳遞至 mysql 命令,以還原至雲端資料庫。 如果您偏好使用 GUI 工具,請選擇 PHPMyAdmin 應用程式或 MySQL Workbench。 這些 GUI 工具可以備份和還原資料。

請記住,適用於 MySQL 的 Azure 資料庫和適用於 MariaDB 的 Azure 資料庫僅支援 InnoDB 引擎。 執行備份之前,請務必將所有資料表轉換成 InnoDB。

若要避免任何相容性問題,請檢查雲端中使用的 MySQL 或 MariaDB 的版本號碼是否符合內部部署資料庫伺服器的版本號碼。 適用於 MySQL 的 Azure 資料庫支援 5.6、5.7 和 8.0 版。 適用於 MariaDB 的 Azure 資料庫支援 10.2 和 10.3 版。 如果您的內部部署伺服器使用較早的版本,請考慮先升級為這些版本的其中之一,並針對內部部署的任何問題進行疑難排解,然後再遷移至雲端。

規劃 PostgreSQL 上的備份和還原

PostgreSQL 上的對等命令列備份和還原工具是 pg_dumppg_restore。 對於 GUI 備份和還原工具,請使用 Toad Edge

自訂應用程式程式碼

如果您有大量的資料轉換需求,或想要執行不尋常的移轉,請考慮撰寫您自己的自訂程式碼,將資料從內部部署 MySQL、PostgreSQL 或 MariaDB 資料庫移至雲端。

您的自訂程式碼可能需要許多表單。 您所選擇的語言和架構大多取決於您開發小組的專業知識:

  • 從資料庫產生的 SQL 指令碼,以及修改或從頭開始開發的指令碼。
  • 從開發架構 (例如 .NET 或 JAVA) 編譯的程式碼。
  • PHP 或 Node.js 的指令碼。
  • Bash 或 PowerShell 的 Shell 指令碼。

自訂程式碼的方法可讓您有極大的彈性。 您可以自訂資料的篩選、彙總和轉換方式,也可以遷移至多個目的地或合併多個來源的資料。 如果您有一些需求是立即現成的備份或匯出工具所無法滿足的,可使用此方法。

此方法的缺點是需要更多的投資開發時間。 若要讓自訂程式碼正確地遷移所有資料,必須在實際資料上執行之前,進行廣泛的測試。 此工作需要技術熟練的開發人員和測試人員小組,而且通常會增加專案預算。 如果您考慮撰寫自訂的移轉程式碼,請不要低估建立可靠程式碼所需的時間和精力。

Azure 資料庫移轉服務

Azure 包含一個彈性服務,稱為 Azure 資料庫移轉服務 (DMS),您可以使用該服務從多個資料來源順暢地線上移轉至 Azure 資料平台。 這些平台包含適用於 MySQL 的 Azure 資料庫適用於 MariaDB 的 Azure 資料庫,以及適用於 PostgreSQL 的 Azure 資料庫

當您想要執行線上資料庫移轉至 Azure 時,請考慮使用 Azure DMS。

初始移轉

若要使用 DMS 執行移轉,您要完成以下工作:

  1. 在您選擇的平台上,在 Azure 中建立新的目標資料庫。
  2. 建立新 Azure 資料庫移轉服務 (DMS) 資料移轉專案。
  3. 從內部部署來源資料庫產生結構描述。 如果您使用的是 MySQL,您可以使用 sqldump 來產生結構描述。 如果來源資料庫是 PostgreSQL,請使用 pg_dump
  4. 建立空的資料庫,做為移轉目的地。
  5. 將結構描述套用至目的地資料庫。
  6. 在 DMS 移轉專案中設定來源和目的地資料庫的連線詳細資料。
  7. 執行 DMS 移轉專案。 專案會移轉資料並產生報表。
  8. 請檢閱報表,並更正其確認的任何問題。

線上移轉

Azure DMS 是適用於線上移轉的絕佳工具,在使用 DMS 的情況下,原始資料庫在移轉執行時仍可供使用。 使用者會繼續對來源資料庫中的資料進行變更。 Azure DMS 會使用複寫來同步處理已遷移資料庫的這些變更。 完成遷移之後,您可以重新設定使用者應用程式,以連線到遷移的資料庫。

將 MySQL 或 MariaDB 遷移至 Azure SQL Database

如果您想要將 MySQL 資料庫伺服器上託管的內部部署資料庫移至 Azure 雲端,而且您不需要雲端資料庫執行 MySQL,請考慮移轉至 Azure SQL Database。 Azure SQL Database 是 Microsoft 領先業界之 SQL Server 資料庫引擎的 PaaS 實作。 它包含企業層級的可用性、擴充性和安全性,而且容易監視和管理。

同樣地,如果您的內部部署資料庫伺服器執行 MariaDB,您可以考慮遷移至 Azure SQL Database。 此流程很類似,因為 MariaDB 是 MySQL 的分支。

Azure SQL Database 的功能比適用於 MySQL 的 Azure 資料庫和適用於 MariaDB 的 Azure 資料庫更完整。

注意

您可能需要修改任何連線到已遷移資料庫的應用程式,因為 Azure SQL Database 使用不同的資料類型、不同的資料庫物件,以及來自 MySQL 和 MariaDB 的不同 API。 請諮詢您的開發人員,判斷將用戶端應用程式從內部部署 MySQL 或 MariaDB 資料庫移植到雲端 Azure SQL 資料庫所需的工作量。

適用於 MySQL 的 SQL Server 移轉小幫手

如果您決定從 MySQL 遷移至 Azure SQL Database,您可以使用專用的工具:適用於 MySQL 的 SQL Server 移轉小幫手。 此 GUI 工具會連線到來源 MySQL 資料庫和 SQL Server 資料庫,這可以是 Azure SQL Database 服務中的資料庫。

連線後,小幫手會將完整的結構描述複製到 Azure SQL Database,並將任何資料類型轉換為其 SQL Server 同等項目。 它也會遷移檢視、程序、觸發程序和其他物件。 然後,您可以開始將資料從 MySQL 遷移至 Azure SQL Database。

注意

適用於 MySQL 的 SQL Server 移轉小幫手未針對將 MariaDB 資料庫遷移至 Azure SQL Database 進行過測試。