Dela via


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 lagring 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 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.

  • Om din enskild server-instans har äldre lagringsarkitektur (generell lagring 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-serverwestus 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-serverwestus 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.

Gå vidare