Share via


使用 mydumper/myloader 將大型資料庫遷移至適用於 MySQL 的 Azure 資料庫

警告

本文參考 CentOS,即接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據此考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導

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

適用於 MySQL 的 Azure 資料庫是一個受控服務,您可用來在雲端執行、管理及調整高可用性 MySQL 資料庫。 若要將大於 1 TB 的 MySQL 資料庫移轉至適用於 MySQL 的 Azure 資料庫,請考慮使用 mydumper/myloader 等社群工具,以取得下列效益:

  • 採平行處理,有助於減少移轉時間。
  • 避免耗費資源的字元集轉換常式,提升效能。
  • 統一資料表、中繼資料等不同檔案的輸出格式,方便檢視/剖析資料。 維護所有執行緒的快照集,維持一致性。
  • 主要和複本記錄位置精確。
  • 易於管理;支援與 Perl 相容的規則運算式 (PCRE),可指定包含及排除資料庫和資料表。
  • 結構描述與資料搭配運作。 無須比照其他邏輯移轉工具個別處理。

本快速入門說明如何使用 mydumper/myloader 安裝、備份和還原 MySQL 資料庫。

必要條件

開始移轉 MySQL 資料庫前,您必須:

  1. 使用 Azure 入口網站建立適用於 MySQL 的 Azure 資料庫伺服器。

  2. 使用 Azure 入口網站 (最好是 Ubuntu),建立以 Linux 執行的 Azure VM。

    注意

    安裝工具前,請先考慮下列幾點:

    • 若來源為內部部署,且與 Azure 高頻寬連線 (使用 ExpressRoute),請考慮在 Azure VM 上安裝此工具。
    • 若來源與目標伺服器間有頻寬問題,請考慮在靠近來源伺服器處安裝 mydumper,在靠近目標伺服器處安裝 myloader。 您可使用 Azcopy 工具,將內部部署或其他雲端解決方案的資料移至 Azure。
  3. 安裝 mysql 用戶端,請執行下列步驟:

  • 執行下列命令,在以 Linux 執行的 Azure VM 上更新套件索引:
sudo apt update
  • 執行下列命令安裝 mysql 用戶端套件:
sudo apt install mysql-client

安裝 mydumper/myloader

若要安裝 mydumper/myloader,請執行下列步驟。

  1. 執行下列命令,根據您的作業系統發行版本下載適當的 mydumper/myloader 套件:

    wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
    

    注意

    $ (lsb_release -cs) 有助於識別您的發行版本。

  2. 若要安裝 mydumper 的 .deb 套件,請執行下列命令:

    sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
    

    提示

    由於安裝程式不同,因此用於安裝套件的命令會依您的 Linux 發行版本而不同。 mydumper/myloader 適用於下列發行版本:Fedora、RedHat、Ubuntu、Debian、CentOS、openSUSE 和 MacOSX。 如需詳細資訊,請參閱如何安裝 mydumper

使用 mydumper 建立備份

  • 若要使用 mydumper 建立備份,請執行下列命令:

    mydumper --host=<servername> --user=<username> --password=<Password> --outputdir=./backup --rows=100000 --compress --build-empty-files --threads=16 --compress-protocol --trx-consistency-only --ssl  --regex '^(<Db_name>\.)' -L mydumper-logs.txt
    

此命令會使用下列變數:

  • --host:連線的目標主機

  • --user:具備必要權限的使用者名稱

  • --password:使用者密碼

  • --rows:嘗試將資料表分割為此資料列數目的區塊

  • --outputdir:要傾印輸出檔案的目錄

  • --RegEx:用於比對資料庫的規則運算式。

  • --trx-consistency-only:僅限交易一致性

  • --threads:要使用的執行緒數目,預設為 4。 建議使用等於電腦虛擬核心 2 倍的值。

    注意

    如需其他選項的詳細資訊,您可搭配使用 mydumper,執行下列命令:mydumper --help。 如需詳細資訊,請參閱mydumper\myloader 文件
    若要平行傾印多個資料庫,您可以修改 regex 變數,如範例所示: regex '^(DbName1.|DbName2.)

使用 myloader 還原您的資料庫

  • 若要還原使用 mydumper 備份的資料庫,請執行下列命令:

    myloader --host=<servername> --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=500 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
    

此命令會使用下列變數:

  • --host:連線的目標主機
  • --user:具備必要權限的使用者名稱
  • --password:使用者密碼
  • --directory:備份儲存位置。
  • --queries-per-transaction:建議將值設為 500 以下
  • --threads:要使用的執行緒數目,預設為 4。 建議使用等於電腦虛擬核心 2 倍的值

提示

如需其他選項的詳細資訊,您可搭配使用 myloader,執行下列命令:myloader --help

還原資料庫之後,一律建議驗證來源與目標資料庫之間的數據一致性。

注意

如有任何關於 mydumper/myloader 工具的問題或意見反應,請於此處提交。