Migrera Azure Database for MySQL – enskild server till flexibel server med Azure Database for MySQL Import CLI
GÄLLER FÖR: Azure Database for MySQL – enskild server
Med Azure Database for MySQL Import CLI (allmänt tillgängligt) kan du migrera Azure Database for MySQL sömlöst – enskild server till flexibel server. Den använder teknik för säkerhetskopiering och återställning av ögonblicksbilder för att erbjuda en enkel och snabb migreringsväg för att återställa källserverns fysiska datafiler till målservern. Efter importen kan du dra nytta av fördelarna med flexibel server, inklusive bättre pris och prestanda, detaljerad kontroll över databaskonfiguration och anpassade underhållsfönster.
Baserat på användarindata tar den upp ansvaret för att etablera din flexibla målserver och sedan ta säkerhetskopian av källservern och återställa målet. Den kopierar datafiler, serverparametrar, kompatibla brandväggsregler och serveregenskaper – nivå, version, sku-namn, lagringsstorlek, plats, geo-redundant säkerhetskopiering, offentlig åtkomst, taggar, automatisk ökning, kvarhållningsdagar för säkerhetskopiering, administratörsanvändare och administratörslösenord från enstaka till flexibel serverinstans.
Azure Database for MySQL Import CLI stöder en nästan noll stilleståndstidsmigrering genom att först utföra en offlineimportåtgärd och därför kan användarna konfigurera datareplikering mellan källa och mål för att utföra en onlinemigrering.
Den här självstudien visar hur du använder kommandot Azure Database for MySQL Import CLI för att migrera din Azure Database for MySQL – enskild server till flexibel server.
Nyheter
- Azure Database for MySQL-importåtgärden för enskilda servrar med äldre lagringsarkitektur (Generell användning storage V1) stöds nu. Du måste ange parametern log_bin=ON för din enskild serverinstans med Äldre lagring innan du påbörjar importåtgärden. För att göra det skapar du en läsreplik för din enskild serverinstans och tar sedan bort den. Den här åtgärden anger parametern log_bin till PÅ och du kan sedan utlösa en importåtgärd för att migrera till flexibel server. (Feb 2024)
Starta Azure Cloud Shell
Azure Cloud Shell är ett kostnadsfritt interaktivt gränssnitt som du kan använda för att köra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.
Öppna Cloud Shell genom att välja Prova i det övre högra hörnet i ett kodblock. Du kan också öppna Cloud Shell på en separat webbläsarflik genom att gå till https://shell.azure.com/bash. Välj Kopiera för att kopiera kodblocken, klistra in det i Cloud Shell och välj Retur för att köra det.
Om du föredrar att installera och använda CLI lokalt kräver den här självstudien Azure CLI version 2.54.0 eller senare. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Ställ in
Du måste logga in på ditt konto med kommandot az sign-in . Observera id-egenskapen, som refererar till ditt Azure-kontos prenumerations-ID.
az login
Välj den specifika prenumeration där källan Azure Database for MySQL – Enskild server finns under ditt konto med kommandot az account set . Observera ID-värdet från az login-utdata som ska användas som värde för prenumerationsargumentet i kommandot . Om du har flera prenumerationer väljer du den prenumeration där källan Azure Database for MySQL – enskild server finns. Om du vill hämta alla dina prenumerationer använder du az account list.
az account set --subscription <subscription id>
Begränsningar och förutsättningar
Om källan Azure Database for MySQL – enskild server har basic-SKU kan du överväga att ange SKU:n i importkommandot som Generell användning för att lindra eventuella problem med minnesbrist. Du kan ändra tillbaka SKU:n till Burstable på den migrerade flexibla serverinstansen efter migreringen.
Om din källa i Azure Database for MySQL – enskild server har motorversion v8.x måste du uppgradera källserverns .NET-klientdrivrutinsversion till 8.0.32 för att undvika kodningskompatibiliteter efter migreringen till flexibel server.
Källan Azure Database for MySQL – enskild server och målet Azure Database for MySQL – flexibel server måste finnas i samma prenumeration, resursgrupp, region och på samma MySQL-version. Det går inte att importera mellan prenumerationer, resursgrupper, regioner och versioner.
MySQL-versioner som stöds av Azure Database for MySQL Import CLI är 5.7 och 8.0. Om du har en annan mySQL-huvudversion på enskild server måste du uppgradera din version på din enskild serverinstans innan du utlöser importkommandot.
Om Azure Database for MySQL – Single Server-instansen har serverparametern "lower_case_table_names" inställd på 2 och dina programanvända partitionstabeller resulterar importåtgärden i skadade partitionstabeller. Rekommendationen är att ange "lower_case_table_names" till 1 för din Azure Database for MySQL – enskild server-instans för att fortsätta med den skadade MySQL-importåtgärden.
Import till en befintlig flexibel Azure MySQL-server stöds inte. CLI-kommandot initierar importen av en ny flexibel Azure MySQL-server.
Om den flexibla målservern etableras som icke-HA (hög tillgänglighet inaktiverad) när du uppdaterar CLI-kommandoparametrarna kan den senare växlas till ha med samma zon, men inte zonredundant HA.
För CMK-aktiverade enskilda serverinstanser kräver Azure Database for MySQL Import-kommandot att du anger obligatoriska indataparametrar för att aktivera CMK på flexibel målserver.
Om en enskild serverinstans har "Infrastruktur dubbelkryptering" aktiverad rekommenderar vi att du aktiverar kundhanterad nyckel (CMK) på målinstansen för flexibel server för att stödja liknande funktioner. Du kan välja att aktivera CMK på målservern med Indataparametrar för Azure Database for MySQL Import CLI eller efter migreringen.
Om en enskild serverinstans har "Query Store" aktiverat rekommenderar vi att du aktiverar långsamma frågeloggar på den flexibla målserverinstansen för att stödja liknande funktioner. Du kan konfigurera långsamma frågeloggar på den flexibla målservern genom att följa stegen här. Du kan sedan visa frågeinsikter med hjälp av en mall för arbetsböcker.
Viktiga överväganden när du använder virtuellt nätverk (VNet) och Azure Database for MySQL Import CLI: – Undvik samtidiga åtgärder på VNet: När du kör en importåtgärd bör du avstå från att utföra andra åtgärder på samma virtuella nätverk. Om det pågår andra åtgärder väntar du tills de har slutförts helt innan du påbörjar importen. Detta är för att förhindra eventuella konflikter eller resurskonkurrering. - Begränsa samtidiga servermigreringar: Om du planerar att migrera flera servrar som finns under samma virtuella nätverk ska du inte initiera dessa migreringar samtidigt. Detta kan potentiellt leda till att åtgärderna blockeras i det virtuella nätverket, vilket leder till längre väntetider och till och med tidsgränser.
Om din enskild server-instans har arkitektur för äldre lagring (Generell användning storage V1) måste du ange parametern log_bin=ON för din enskild serverinstans innan du påbörjar importåtgärden. För att göra det skapar du en läsreplik för din enskild serverinstans och tar sedan bort den. Den här åtgärden anger parametern log_bin till PÅ och du kan sedan utlösa en importåtgärd för att migrera till flexibel server.
Om en enskild serverinstans har Advanced Threat Protection aktiverat måste du aktivera Advanced Threat Protection på den migrerade flexibla serverinstansen efter migreringen genom att följa stegen [här] (/azure/mysql/flexible-server/advanced-threat-protection-setting?view=azure-cli-latest).
Om din enskild server-instans har motorversion v8.0 bör du överväga att utföra följande åtgärder för att undvika icke-bakåtkompatibla ändringar på grund av skillnader i community-delversioner mellan instansen Enkel och Flexibel server:
Kör följande instruktion för att kontrollera om din instans kan påverkas av felaktig histograminformation. Om motsvarande tabeller är utdata rekommenderar vi att du refererar till för att https://dev.mysql.com/blog-archive/histogram-statistics-in-mysql/ ta bort histograminformationen och sedan återskapa den på den flexibla servern. Det är värt att notera att histogrammet inf endast är statistisk information om kolumnerna, och den här informationen finns bara i systemtabeller, så att ta bort histograminformationen påverkar inte tabelldata.
SELECT DISTINCT SCHEMA_NAME, TABLE_NAME FROM `information_schema`.`column_statistics`;
Kör följande kommando för att söka efter tabeller som kan ha deras tabellkolumnordning oorganiserad. Om den här kontrollen identifierar alla berörda tabeller måste du dumpa alla data från dessa tabeller och sedan importera tillbaka dem. Om du inte gör det kan det leda till att sekvensen med kolumner i binlog inte matchar sekvensen med kolumner i användartabellerna. Den här avvikelsen kan hindra användare från att konfigurera replikering, återställa data, aktivera hög tillgänglighet (HA) och andra åtgärder.
SELECT table_schema, table_name, COUNT(*) AS column_count, MAX(ORDINAL_POSITION) AS max_ordinal_position FROM information_schema.columns GROUP BY table_schema, table_name HAVING column_count != max_ordinal_position;
Endast import på instansnivå stöds. Det finns inget alternativ för att importera valda databaser i en instans.
Objekten nedan bör kopieras från källa till mål av användaren efter importåtgärden:
- Skrivskyddade repliker
- Inställningar för övervakningssidor (aviseringar, mått och diagnostikinställningar)
- Alla Terraform-/CLI-skript som hanteras av dig för att hantera en enskild serverinstans bör uppdateras med referenser för flexibel server
Utlösa en Azure Database for MySQL-importåtgärd för att migrera från Azure Database for MySQL – enskild server till flexibel server
Utlös en Azure Database for MySQL-importåtgärd med az mysql flexible-server import create
kommandot . Följande kommando skapar en flexibel målserver och utför import på instansnivå från källa till målmål med hjälp av tjänstens standardvärden och värden från azure CLI:s lokala kontext:
az mysql flexible-server import create --data-source-type
--data-source
--resource-group
--name
[--sku-name]
[--tier]
[--version]
[--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]
[--location]
[--private-dns-zone]
[--public-access]
[--resource-group]
[--standby-zone]
[--storage-auto-grow {Disabled, Enabled}]
[--subnet]
[--subnet-prefixes]
[--tags]
[--vnet]
[--zone]
I följande exempel används datakällinformationen för enskild server med namnet "test-single-server" och målinformation för flexibel server, skapar en flexibel målserver med namnet test-flexible-server
på westus
platsen (samma plats som källans enskild server) och utför en import från källa till mål. Kommandot Azure Database MySQL Import mappar över motsvarande nivå, version, sku-name, storage-size, location, geo-redundant-backup, public-access, tags, auto grow, backup-retention-days, admin-user och admin-password properties from Single Server to Flexible Server as smart defaults if no inputs are provided to the CLI command. Du kan välja att åsidosätta de smarta standardvärdena genom att ange indata för dessa valfria parametrar.
az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg" --name "test-flexible-server"
I följande exempel används information om datakällan för enskild server med namnet "test-single-server" och målinformation om flexibel server, skapar en flexibel målserver med namnet test-flexible-server
på westus
platsen (samma plats som källans enskild server) med zonredundans aktiverat och integrering av virtuella nätverk och utför en import från källa till mål. Läs mer om konfiguration av virtuella nätverk här.
# create vnet
az network vnet create --resource-group testGroup --name myVnet --location testLocation --address-prefixes 172.0.0.0/16
# create subnet
az network vnet subnet create --resource-group testGroup --vnet-name myVnet --address-prefixes 172.0.0.0/24 --name mySubnet
# create private dns zone
az network private-dns zone create -g testGroup -n myserver.private.contoso.com
# trigger mysql import
az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg" --name "test-flexible-server" --high-availability ZoneRedundant --zone 1 --standby-zone 3 --vnet "myVnet" --subnet "mySubnet" --private-dns-zone "myserver.private.contoso.com"
I följande exempel används datakällinformationen för enskild server med namnet "test-single-server" med kundhanterad nyckel (CMK) aktiverad och målinformation om flexibel server, skapar en flexibel målserver med namnet test-flexible-server
och utför en import från källa till mål. För CMK-aktiverade enskilda serverinstanser kräver Azure Database for MySQL Import-kommandot att du anger obligatoriska indataparametrar för att aktivera CMK: --keyIdentifierOfTestKey --identity testIdentity.
# create keyvault
az keyvault create -g testGroup -n testVault --location testLocation \
--enable-purge-protection true
# create key in keyvault and save its key identifier
keyIdentifier=$(az keyvault key create --name testKey -p software \
--vault-name testVault --query key.kid -o tsv)
# create identity and save its principalId
identityPrincipalId=$(az identity create -g testGroup --name testIdentity \
--location testLocation --query principalId -o tsv)
# add testIdentity as an access policy with key permissions 'Wrap Key', 'Unwrap Key', 'Get' and 'List' inside testVault
az keyvault set-policy -g testGroup -n testVault --object-id $identityPrincipalId \
--key-permissions wrapKey unwrapKey get list
# trigger azure database for mysql import for CMK enabled single server
az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg" --name "test-flexible-server" --key $keyIdentifier --identity testIdentity
Här följer information om argumenten ovan:
Inställning | Exempelvärde | Beskrivning |
---|---|---|
datakällans typ | mysql_single | Den typ av datakälla som fungerar som källmål för att utlösa Azure Database for MySQL-import. Godkända värden: [mysql_single]. Beskrivning av godkända värden – mysql_single: Azure Database for MySQL – enskild server. |
datakälla | test-single-server | Namnet eller resurs-ID:t för källan Azure Database for MySQL – enskild server. |
resource-group | test-rg | Namnet på Azure-resursgruppen för källan Azure Database for MySQL – enskild server. |
läge | Offline | Läget för Azure Database for MySQL-import. Godkända värden: [Offline]; Standardvärde: Offline. |
plats | westus | Azure-platsen för källan Azure Database for MySQL – enskild server. |
name | test-flexible-server | Ange ett unikt namn för din azure-måldatabas för MySQL – flexibel server. Ditt servernamn får bara innehålla gemener, siffror och bindestreck. Det måste innehålla mellan 3 och 63 tecken. Obs! Den här servern distribueras i samma prenumeration, resursgrupp och region som källan. |
admin-user | adminuser | Användarnamnet för administratörsinloggningen för din azure database for MySQL – flexibel server. Det kan inte vara azure_superuser, administratör, administratör, rot, gäst eller offentlig. |
admin-password | lösenord | Administratörsanvändarens lösenord för din azure-måldatabas för MySQL – flexibel server. Det måste innehålla mellan 8 och 128 tecken. Lösenordet måste innehålla tecken från tre kategorier: engelska versaler, engelska gemener, siffror och icke-numeriska tecken. |
sku-name | GP_Gen5_2 | Ange namnet på prisnivån och beräkningskonfigurationen för din azure database for MySQL – flexibel server. Följer konventionen {prisnivå}{beräkningsgenerering}{vCores} i snabbformat. Mer information finns i prisnivåerna . |
nivå | Burstbar | Beräkningsnivå för azure database for MySQL – flexibel målserver. Accepterade värden: Burstable, GeneralPurpose, MemoryOptimized; Standardvärde: Burstable. |
offentlig åtkomst | 0.0.0.0 | Avgör offentlig åtkomst för azure database for MySQL – flexibel målserver. Ange en eller flera IP-adresser som ska ingå i listan över tillåtna IP-adresser. IP-adressintervall måste vara streckavgränsade och inte innehålla några blanksteg. Om du anger 0.0.0.0 kan offentlig åtkomst från alla resurser som distribueras i Azure komma åt servern. Om du ställer in den på "Ingen" anges servern i läget för offentlig åtkomst men skapar ingen brandväggsregel. |
vnet | myVnet | Namn eller ID för ett nytt eller befintligt virtuellt nätverk. Om du vill använda ett virtuellt nätverk från en annan resursgrupp eller prenumeration anger du ett resurs-ID. Namnet måste vara mellan 2 och 64 tecken. Namnet måste börja med en bokstav eller siffra, sluta med en bokstav, ett nummer eller understreck och får endast innehålla bokstäver, siffror, understreck, punkter eller bindestreck. |
subnet | mySubnet | Namn eller resurs-ID för ett nytt eller befintligt undernät. Om du vill använda ett undernät från en annan resursgrupp eller prenumeration anger du resurs-ID i stället för namn. Undernätet delegeras till flexibleServers. Efter delegeringen kan det här undernätet inte användas för någon annan typ av Azure-resurser. |
private-dns-zone | myserver.private.contoso.com | Namn eller ID för ny eller befintlig privat DNS-zon. Du kan använda den privata DNS-zonen från samma resursgrupp, en annan resursgrupp eller en annan prenumeration. Om du vill använda en zon från en annan resursgrupp eller prenumeration anger du resurs-ID. CLI skapar en ny privat DNS-zon i samma resursgrupp som det virtuella nätverket om den inte tillhandahålls av användarna. |
key | nyckelidentifierare för testKey | Resurs-ID för den primära nyckelvalvsnyckeln för datakryptering. |
identitet | testIdentity | Namnet eller resurs-ID:t för den användartilldelade identiteten för datakryptering. |
storage-size | 32 | Lagringskapaciteten för Azure Database for MySQL – flexibel målserver. Minimivärdet är 20 GiB och max 16 TiB. |
taggar | key=value | Ange namnet på Azure-resursgruppen. |
version | 5.7 | Serverns huvudversion av målet Azure Database for MySQL – flexibel server. |
hög tillgänglighet | ZoneRedundant | Aktivera (ZoneRedundant eller SameZone) eller inaktivera funktionen med hög tillgänglighet för azure database for MySQL – flexibel server. Godkända värden: Disabled, SameZone, ZoneRedundant; Standardvärde: Inaktiverat. |
zon | 1 | Tillgänglighetszon som resursen ska etableras i. |
standby-zone | 3 | Tillgänglighetszoninformationen för väntelägesservern när hög tillgänglighet är aktiverad. |
storage-auto-grow | Aktiverat | Aktivera eller inaktivera automatisk lagringsökning för Azure Database for MySQL – flexibel målserver. Standardvärdet är Aktiverat. Godkända värden: Inaktiverad, Aktiverad; Standardvärde: Aktiverat. |
iops | 500 | Antal IOPS som ska allokeras för målet azure database for MySQL – flexibel server. Du får en viss mängd kostnadsfri IOPS baserat på beräkning och lagring som etablerats. Standardvärdet för IOPS är kostnadsfri IOPS. Mer information om IOPS baserat på beräkning och lagring finns i IOPS i Azure Database for MySQL – flexibel server. |
Steg för onlinemigrering
När du har slutfört den ovan angivna importåtgärden för Azure Database for MySQL:
- Logga in på målet Azure Database for MySQL – flexibel server och kör följande kommando för att hämta bin-log-filnamnet och positionen som motsvarar den ögonblicksbild av säkerhetskopieringen som används av Azure Database for MySQL Import CLI för att återställa till målservern.
CALL mysql.az_show_binlog_file_and_pos_for_mysql_import();
- Konfigurera datareplikering mellan käll- och målserverinstanserna med hjälp av bin-log-position genom att följa stegen här och när replikeringsstatusen visar att målservern har kommit ikapp källan, stoppa replikeringen och utföra snabb användning.
Metodtips för att konfigurera CLI-kommandoparametrar för Azure Database for MySQL Import
Innan du utlöser CLI-kommandot Azure Database for MySQL Import bör du överväga följande vägledning för parameterkonfiguration för att säkerställa snabbare datainläsning med Azure Database for MySQL Import CLI.
Om du vill åsidosätta smarta standardvärden väljer du beräkningsnivån och SKU-namnet för den flexibla målservern baserat på den enskilda källserverns prisnivå och virtuella kärnor baserat på informationen i följande tabell.
Prisnivå för enskild server Virtuella kärnor för enskild server Flexibel servernivå SKU-namn för flexibel server Grundläggande 1 Burstbar Standard_B2ms Grundläggande 2 Burstbar Standard_B2ms Generell användning 4 GeneralPurpose Standard_D4ds_v4 Generell användning 8 GeneralPurpose Standard_D8ds_v4 Generell användning 16 GeneralPurpose Standard_D16ds_v4 Generell användning 32 GeneralPurpose Standard_D32ds_v4 Generell användning 64 GeneralPurpose Standard_D64ds_v4 Minnesoptimerad 4 MemoryOptimized Standard_E4ds_v4 Minnesoptimerad 8 MemoryOptimized Standard_E8ds_v4 Minnesoptimerad 16 MemoryOptimized Standard_E16ds_v4 Minnesoptimerad 32 MemoryOptimized Standard_E32ds_v4 MySQL-versionen, regionen, prenumerationen och resursen för den flexibla målservern måste vara lika med den enda källserverns.
Lagringsstorleken för den flexibla målservern ska vara lika med eller större än på den enskilda källservern.
Om en enskild serverinstans har "Infrastruktur dubbelkryptering" aktiverad rekommenderar vi att du aktiverar kundhanterad nyckel (CMK) på målinstansen för flexibel server för att stödja liknande funktioner. Du kan välja att aktivera CMK på målservern med Indataparametrar för Azure Database for MySQL Import CLI eller efter migreringen.
Hur lång tid tar det för Azure Database for MySQL-import att migrera min enskild serverinstans?
Nedan visas prestandamått baserat på lagringsstorlek för Generell användning V2-lagringsarkitektur. (Servrar med generell användning V1-lagring tar längre tid att migrera eftersom det även innebär att uppgradera lagringsarkitekturen)
Lagringsstorlek för enskild server | Importtid |
---|---|
1 GiB | 0 min 23 sek |
10 GiB | 4 min 24 sek |
100 GiB | 10 min 29 sek |
500 GiB | 13 min 15 sek |
1 TB | 22 min 56 sekunder |
10 TB | 2 timmar 5 min 30 sek |
I tabellen ovan, när lagringsstorleken ökar, ökar också den tid som krävs för datakopiering, nästan i en linjär relation. Observera dock att kopieringshastigheten kan påverkas avsevärt av nätverksfluktuationer. Därför bör de uppgifter som anges här endast ses som en referens.
Nedan visas prestandamått baserat på varierande antal tabeller för 10 GiB-lagringsstorlekar.
Antal tabeller i en serverinstans | Importtid |
---|---|
100 | 4 min 24 sek |
200 | 4 min 40 sek |
800 | 4 min 52 sek |
14,400 | 17 min 41 sek |
28,800 | 19 min 18 sek |
38,400 | 22 min 50 sek |
När antalet filer ökar kan varje fil/tabell i databasen bli mycket liten. Detta resulterar i en konsekvent mängd data som överförs, men det kommer att finnas mer frekventa filrelaterade åtgärder, vilket kan påverka prestandan för Azure Database for Mysql-import.
Steg efter importen
- Kopiera följande egenskaper från källan Enskild server för att rikta in sig på flexibel server efter att Azure Database for MySQL-importåtgärden har slutförts:
- Skrivskyddade repliker
- Serverparametervärde för event_scheduler
- Inställningar för övervakningssidor (aviseringar, mått och diagnostikinställningar)
- Alla Terraform-/CLI-skript som du är värd för för att hantera en enskild serverinstans bör uppdateras med referenser för flexibel server.