使用 適用於 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 支援的步驟記錄,這是在發生失敗時所需的記錄。
重要
嘗試存取從來源伺服器匯入的損毀數據表,可能會導致彈性伺服器當機。 因此,在使用 Percona XtraBackup 公用程式進行備份之前,強烈建議在來源伺服器上執行 “mysqlcheck / Optimize Table” 作業。
建立 Azure Blob 容器並且取得容器的共用存取簽章 (SAS) 權杖 (Azure 入口網站或 Azure CLI)。 請確定您在 [權限] 下拉式清單中授與 [新增]、[建立] 和 [寫入] 權限。 將 Blob SAS 權杖和 URL 值複製並貼到安全的位置。 這些值只會顯示一次,一旦關閉視窗就無法再擷取。
將 {backup_dir_path} 的完整備份檔案上傳至您的 Azure Blob 儲存體。 請遵循 下列步驟來上傳檔案。
若要執行線上移轉,請藉由執行 cat xtrabackup_info 命令並複製 bin_log 位置輸出,擷取及儲存使用 Percona XtraBackup 所取得的備份檔案的 bin-log 位置。
Azure 儲存體帳戶應該使用 SAS 權杖公開存取。 不支援具有虛擬網路設定的 Azure 儲存體帳戶。
限制
- 來源伺服器組態不會移轉。 您必須適當地設定目標彈性伺服器。
- 不支援加密備份的移轉。
- 使用者和權限不會在適用於 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_superuser、admin、administrator、root、guest 或 public。 |
admin-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 區域。 |
key | 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 秒 |
隨著儲存體大小增加,資料複製所需的時間也會增加,幾乎是線性關聯性。 不過,請務必注意,網路波動可能會大幅影響複製速度。 因此,此處提供的資料應該僅作為參考。