共用方式為


使用適用於 MySQL 的 Azure 資料庫匯入 CLI,將 MySQL 內部部署或虛擬機器 (VM) 工作負載移轉至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

適用於 MySQL 的 Azure 資料庫 匯入外部移轉可讓您順暢地將 MySQL 內部部署或虛擬機 (VM) 工作負載移轉至 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。 它會使用使用者提供的實體備份檔,並將來源伺服器的實體數據檔還原至目標伺服器,提供簡單且快速的移轉路徑。 匯入後作業,您可以利用彈性伺服器的優點,包括更好的價格和效能、對資料庫組態的細微控制,以及自定義維護時段。

根據使用者輸入,其會負責佈建目標彈性伺服器,然後將儲存在 Azure Blob 儲存體帳戶中的來源伺服器的使用者提供實體備份,還原至目標彈性伺服器執行個體。

本教學課程示範如何使用適用於 MySQL 的 Azure 資料庫匯入 CLI 命令,將您的移轉 MySQL 內部部署或虛擬機器 (VM) 工作負載移轉至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,請選取程式碼區塊右上角的 [試試看]。 您也可以移至 https://shell.azure.com/bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後選取 Enter 鍵加以執行。

如果您偏好在本機安裝和使用 CLI,在進行本教學課程時將需要 Azure CLI 2.54.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

設定

您必須使用 az sign-in 命令登入帳戶。 請注意 id 屬性,其代表您 Azure 帳戶的訂用帳戶識別碼

az login

使用 az account set 命令,選取您想要在帳戶下的哪個特定訂用帳戶部署目標彈性伺服器。 請留意,使用 az login 輸出中的 id 值,作為命令中訂用帳戶引數的值。 若要取得您的所有訂用帳戶,請使用 az account list

az account set --subscription <subscription id>

必要條件

  • 來源伺服器應具有下列參數:
    • Lower_case_table_names = 1
    • Innodb_file_per_table = ON
    • 系統資料表空間應為 ibdata1。
    • 系統資料表空間大小應大於或等於 12 MB。 (MySQL 預設值)
    • Innodb_page_size = 16348 (MySQL 預設值)
    • 僅支援 INNODB 引擎。
  • 使用 Percona XtraBackup 對 MySQL 工作負載進行實體備份。 以下是使用 Percona XtraBackup 進行完整備份的步驟:
    • 在內部部署或 VM 工作負載上安裝 Percona XtraBackup。 針對 MySQL 引擎 5.7 版,請安裝 Percona XtraBackup 2.4 版,請參閱安裝 Percona XtraBackup 2.4。 針對 MySQL 引擎 8.0 版,請安裝 Percona XtraBackup 8.0 版,請參閱安裝 Percona XtraBackup 8.0
    • 如需使用 Percona XtraBackup 2.4 進行完整備份的指示,請參閱完整備份。 如需使用 Percona XtraBackup 8.0 進行完整備份的指示,請參閱 [完整備份] (https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html)。 進行完整備份時,請依序執行下列命令:
      • - xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}
      • - xtrabackup --prepare --{backup_dir_path} (在這裡提供與上述命令相同的備份路徑)
    • 採用 Percona XtraBackup 時的考慮:
      • 請確定您同時執行備份和準備步驟。
      • 請確定備份和準備步驟中沒有任何錯誤。
      • 保留備份並準備 Azure 支援的步驟記錄,這是在發生失敗時所需的記錄。
  • 建立 Azure Blob 容器並且取得容器的共用存取簽章 (SAS) 權杖 (Azure 入口網站Azure CLI)。 請確定您已在 [許可權] 下拉式清單中授與 [新增]、[建立] 和 [寫入]。 將 Blob SAS 權杖和 URL 值複製並貼到安全的位置。 這些值只會顯示一次,一旦關閉視窗就無法再擷取。
  • 將位於 {backup_dir_path} 的完整備份文件上傳至您的 Azure Blob 記憶體。 請遵循這裡的步驟。
  • 若要執行在線移轉,請執行 cat xtrabackup_info 命令並複製bin_log pos 輸出,來擷取及儲存使用 Percona XtraBackup 所擷取備份檔的 bin-log 位置。

限制

  • 來源伺服器組態不會移轉。 您必須適當地設定目標彈性伺服器。
  • 不支援加密備份的移轉。
  • 使用者和權限不會在適用於 MySQL 的 Azure 資料庫匯入過程中移轉。 您必須先手動傾印使用者和權限,才能起始適用於 MySQL 的 Azure 資料庫匯入,藉由在目標彈性伺服器上還原以在匯入作業後移轉登入。
    • user1@localhost無法移轉,因為我們不支援在彈性伺服器中建立localhost使用者。
  • 啟用高可用性 (HA) 的彈性伺服器會以 HA 停用的伺服器的形式傳回,以在匯入移轉後提高移轉作業的速度。 在移轉後為您的目標彈性伺服器啟用 HA。

最佳移轉體驗的建議

  • 請考慮將 Azure Blob 儲存體帳戶和目標彈性伺服器保持部署在相同區域中,以提升匯入效能。
  • 目標適用於 MySQL 的 Azure 資料庫彈性伺服器的建議 SKU 組態 -
    • 不建議為目標設定高載 SKU,以在執行 適用於 MySQL 的 Azure 資料庫 匯入作業時優化移轉時間。 建議您針對匯入作業、匯入作業後調整為一般用途/業務關鍵,您可以縮小為高載 SKU。

觸發適用於 MySQL 的 Azure 資料庫匯入作業,以從適用於 MySQL 的 Azure 資料庫 - 彈性伺服器移轉

使用 az mysql flexible-server import create 命令觸發適用於 MySQL 的 Azure 資料庫匯入作業。 下列命令會建立目標彈性伺服器,並使用 Azure CLI 的本機內容,從備份檔執行實例層級匯入至目標目的地:

az mysql flexible-server import create --data-source-type
                                --data-source
                                --data-source-sas-token
                                --resource-group
                                --name
                                --sku-name
                                --tier
                                --version
                                --location
                                [--data-source-backup-dir]
                                [--storage-size]
                                [--mode]
                                [--admin-password]
                                [--admin-user]
                                [--auto-scale-iops {Disabled, Enabled}]
                                [--backup-identity]
                                [--backup-key]
                                [--backup-retention]
                                [--database-name]
                                [--geo-redundant-backup {Disabled, Enabled}]
                                [--high-availability {Disabled, SameZone, ZoneRedundant}]
                                [--identity]
                                [--iops]
                                [--key]
                                [--private-dns-zone]
                                [--public-access]
                                [--resource-group]
                                [--standby-zone]
                                [--storage-auto-grow {Disabled, Enabled}]
                                [--subnet]
                                [--subnet-prefixes]
                                [--tags]
                                [--vnet]
                                [--zone]

The following example takes in the data source information for your source MySQL server's backup file and target Flexible Server information, creates a target Flexible Server named `test-flexible-server` in the `westus` location and performs an import from backup file to target.

azurecli-interactive
az mysql flexible-server import create --data-source-type "azure_blob" --data-source "https://onprembackup.blob.core.windows.net/onprembackup" --data-source-backup-dir "mysql_backup_percona" –-data-source-token "{sas-token}" --resource-group "test-rg"  --name "test-flexible-server" –-sku-name Standard_D2ds_v4  --tier GeneralPurpose –-version 5.7 -–location "westus"

上述引數的詳細資料如下:

設定 範例值 說明
data-source-type azure_blob 作為觸發適用於 MySQL 的 Azure 資料庫匯入之來源目的地的資料來源類型。 可接受的值:[azure_blob]。 可接受的值的描述 - azure_blob:Azure Blob 儲存體。
data-source {resourceID} Azure Blob 容器的資源識別碼。
data-source-backup-dir mysql_percona_backup 將備份檔案上傳到其中的 Azure Blob 儲存體容器的目錄。 只有在備份檔案未儲存在 Azure Blob 容器的根資料夾中時,才需要此值。
data-source-sas-token {sas-token} 針對授與存取權以從 Azure Blob 儲存體容器匯入的共用存取簽章 (SAS) 權杖。
資源群組 test-rg 目標適用於 MySQL 的 Azure 資料庫彈性伺服器的 Azure 資源群組名稱。
mode 離線 適用於 MySQL 的 Azure 資料庫匯入的模式。 接受的值: [Offline]; 預設值: Offline。
location westus 來源適用於 MySQL 的 Azure 資料庫彈性伺服器的 Azure 位置。
NAME test-flexible-server 輸入適用於 MySQL 的 Azure 資料庫目標彈性伺服器的唯一名稱。 伺服器名稱只能包含小寫字母、數字及連字號 (-) 字元。 此名稱必須包含 3 到 63 個字元。 注意: 此伺服器部署在與來源相同的訂閱、資源群組和區域中。
admin-user adminuser 適用於 MySQL 的 Azure 資料庫目標彈性伺服器的系統管理員登入使用者名稱。 此名稱不得為 azure_superuseradminadministratorrootguestpublic
admin-password password 適用於 MySQL 的 Azure 資料庫目標彈性伺服器的系統管理員使用者密碼。 其必須包含 8 到 128 個字元。 您的密碼必須包含下列三個類別的字元: 英文大寫字母、英文小寫字母、數字與非英數字元。
sku-name GP_Gen5_2 輸入適用於 MySQL 的 Azure 資料庫目標彈性伺服器的定價層和計算設定名稱。 遵循簡短形式的慣例 {pricing tier}{compute generation}{vCores}。 如需詳細資訊,請參閱定價層
階層 可高載 適用於 MySQL 的 Azure 資料庫目標彈性伺服器的計算層。 接受的值: Burstable、GeneralPurpose、MemoryOptimized; 預設值: Burstable。
public-access 0.0.0.0 決定適用於 MySQL 的 Azure 資料庫目標彈性伺服器的公用存取。 輸入要包含在允許 IP 清單中的單一 IP 位址或 IP 位址範圍。 IP 位址範圍必須以虛線分隔,且不包含任何空格。 指定 0.0.0.0 允許從 Azure 內部署的任何資源進行公用存取,以存取您的伺服器。 將其設定為 [無] 會以公用存取模式設定伺服器,但不會建立防火牆規則。
虛擬網路 myVnet 新的或現有虛擬網路的名稱或識別碼。 如果您想要使用來自不同資源群組或訂用帳戶的虛擬網路,請提供資源識別符。 此名稱的長度必須介於 2 到 64 個字元之間。 名稱必須以字母或數字開頭,以字母、數字或底線結尾,且只能包含字母、數字、底線、句號 (.) 或連字號。
子網路 mySubnet 新的或現有子網路的名稱或資源識別碼。 如果您想要使用來自不同資源群組或訂用帳戶的子網路,請提供資源識別碼,而不是名稱。 子網會委派給彈性伺服器。 委派之後,此子網路無法用於任何其他類型的 Azure 資源。
private-dns-zone myserver.private.contoso.com 新的或現有私人 DNS 區域的名稱或識別碼。 您可以使用來自相同資源群組、不同資源群組或不同訂閱的私人 DNS 區域。 如果您想要使用來自不同資源群組或訂用帳戶的區域,請提供資源識別符。 如果使用者未提供,CLI 會在與虛擬網路相同的資源群組內建立新的私人 DNS 區域。
索引鍵 testKey 的金鑰識別碼 資料加密之主要金鑰保存庫金鑰的資源識別碼。
身分 testIdentity 用於資料加密之使用者指派身分識別的名稱或資源識別碼。
storage-size 32 適用於 MySQL 的 Azure 資料庫目標彈性伺服器的儲存體容量。 最小值為 20 GiB,最大值為 16 TiB。
標記 key=value 提供 Azure 資源群組的名稱。
version 5.7 適用於 MySQL 的 Azure 資料庫目標彈性伺服器的伺服器主要版本。
high-availability ZoneRedundant 啟用 (ZoneRedundant 或 SameZone) 或停用適用於 MySQL 的 Azure 資料庫目標彈性伺服器的高可用性功能。 接受的值: Disabled、SameZone、ZoneRedundant; 預設值: Disabled。
區域 1 要在其中佈建資源的可用性區域。
standby-zone 3 啟用高可用性時待命伺服器的可用性區域資訊。
storage-auto-grow 已啟用 啟用或停用適用於 MySQL 的 Azure 資料庫目標彈性伺服器的儲存體自動成長。 預設值為 Enabled。 接受的值: Disabled、Enabled; 預設值: Enabled。
iops 500 要配置給適用於 MySQL 的 Azure 資料庫目標彈性伺服器的 IOPS 數目。 您會根據佈建的計算和儲存體,取得一定數量的免費 IOPS。 IOPS 的預設值是免費的 IOPS。 若要深入了解以計算和儲存體為基礎的 IOPS,請參閱適用於 MySQL 的 Azure 資料庫彈性伺服器中的 IOPS。

以最短停機時間移轉至彈性伺服器

若要使用 適用於 MySQL 的 Azure 資料庫 匯入從備份檔完成初始植入之後執行在線移轉,您可以依照這裡的步驟設定來源與目標之間的數據輸入複寫。 您可以使用在使用 Percona XtraBackup 擷取備份檔案時擷取的 bin-log 位置,來設定以 bin-log 位置為基礎的複寫。

適用於 MySQL 的 Azure 資料庫匯入需要多久時間才能移轉 MySQL 執行個體?

根據儲存體大小進行效能評定。

備份檔案儲存體大小 匯入時間
1 GiB 0 分 23 秒
10 GiB 4 分 24 秒
100 GiB 10 分 29 秒
500 GiB 13 分 15 秒
1 TB 22 分 56 秒
10 TB 2 小時 5 分 30 秒

隨著儲存體大小增加,資料複製所需的時間也會增加,幾乎是線性關聯性。 不過,請務必注意,複製速度可能會受到網路波動的影響。 因此,此處提供的資料應該僅作為參考。

後續步驟