使用適用於 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_superuser、admin、administrator、root、guest 或 public。 |
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 秒 |
隨著儲存體大小增加,資料複製所需的時間也會增加,幾乎是線性關聯性。 不過,請務必注意,複製速度可能會受到網路波動的影響。 因此,此處提供的資料應該僅作為參考。