Cloud & IT Cert Prep · leksjon

Beste praksis for databasemigrering

Bruk Azure Database Migration Service til å migrere en SQL Server-database til Azure SQL med minimal nedetid, og løs vanlige problemer med skjema og kompatibilitet.

Leksjon 4 av 413 trinn

Beste praksis for databasemigrering er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hvorfor databasemigrering er annerledes

Det er mer komplekst å migrere en database enn å flytte en VM, fordi databaser er tilstandsfulle og ofte har aktive tilkoblinger døgnet rundt. En enkel kopier-og-gjenopprett-tilnærming krever flere timer med nedetid, noe som er uakseptabelt for produksjonssystemer. Anbefalt praksis for databasemigrering bruker kontinuerlig datareplikering for å holde kilden og målet synkronisert mens målet valideres, og gjennomfører deretter en kort, planlagt overgang når trafikken omdirigeres til den nye Azure-databasen.

Azure Database Migration Service

Azure Database Migration Service (DMS) er en fullstendig administrert tjeneste som organiserer nettbaserte migreringer (nesten uten nedetid) og frakoblede migreringer (med nedetid) fra populære lokale databasemotorer til administrerte databasetjenester i Azure. DMS støtter blant annet kildene SQL Server, MySQL, PostgreSQL, MongoDB, Oracle og målene Azure SQL Database, Azure SQL Managed Instance, Azure Database for MySQL og Azure Cosmos DB. Tjenesten integreres med Data Migration Assistant (DMA) for kompatibilitetskontroller før migrering.

# Create a DMS instance
az dms create \
  --service-name myDMS \
  --resource-group myRG \
  --location eastus \
  --sku-name Premium_4vCores \
  --vnet myVnet \
  --subnet mySubnet

Vurdering før migrering med DMA

Før du migrerer SQL Server, bør du kjøre Data Migration Assistant (DMA) mot kildedatabasen. DMA identifiserer: kompatibilitetsproblemer (funksjoner som brukes i databasen, men som ikke støttes av Azure SQL-målet), brudd på kompatibilitet, avviklede funksjoner og ytelsesanbefalinger. Verktøyet genererer en detaljert HTML-rapport som prioriterer problemene etter alvorlighetsgrad, slik at teamet kan løse dem før migreringsvinduet starter.

# Run DMA assessment from CLI (Windows only)
# DmaCmd.exe /AssessmentName='SQL2022toAzureSQL' \
#   /AssessmentSourcePlatform='SqlOnPrem' \
#   /AssessmentTargetPlatform='AzureSqlDatabase' \
#   /AssessmentDatabases='Server=myServer;Initial Catalog=AdventureWorks;Integrated Security=true'

Nettbasert eller frakoblet migrering

Frakoblet migrering setter kildedatabasen offline under hele migreringen — dette kan aksepteres for små databaser eller ikke-kritiske systemer der et vedlikeholdsvindu er mulig. Nettbasert migrering bruker change data capture (CDC) eller overføring av transaksjonslogger til å replikere endringer kontinuerlig mens den nye databasen lastes inn. Dermed begrenses nedetiden til det siste overgangstrinnet. Nettbasert migrering anbefales for databaser som er større enn 1 GB, eller som har SLA-er med krav om mindre enn 1 times nedetid.

Konfigurere et DMS-migreringsprosjekt

Et DMS-migreringsprosjekt angir kildetilkoblingen (servernavn, autentisering og databasenavn), målkoblingen (tilkoblingsstreng for Azure SQL) og migreringsmodusen (nettbasert eller frakoblet). Du velger også hvilke databaser og tabeller som skal migreres. DMS validerer tilkoblingen før starten. Migreringsprosjektet lagres i Azure-portalen, slik at du kan overvåke fremdriften, prøve på nytt for tabeller som mislyktes, og se detaljerte aktivitetslogger.

# Create a DMS project for SQL Server to Azure SQL Database
az dms project create \
  --service-name myDMS \
  --resource-group myRG \
  --name SQL2AzureSQL \
  --source-platform SQL \
  --target-platform SQLDB \
  --location eastus

Migrer skjemaet først

Du bør alltid migrere skjemaet før dataene. Bruk DMA eller SQL Server Management Studio (SSMS) til å generere skript for og distribuere tabeller, visninger, lagrede prosedyrer, funksjoner og indekser til Azure SQL Database-målet. Kontroller at alle skjemaobjektene finnes og kompileres uten feil før du lar DMS starte dataoverføringen. Skjemafeil som oppdages under migreringen, kan ødelegge migreringskjøringen og tvinge deg til å starte helt på nytt.

# Generate schema scripts using sqlpackage
sqlpackage /Action:Script \
  /SourceServerName:myOnPremServer \
  /SourceDatabaseName:AdventureWorks \
  /TargetServerName:mysqlserver.database.windows.net \
  /TargetDatabaseName:AdventureWorksAzure \
  /OutputPath:/tmp/schema.sql

Innledende datalasting

DMS utfører en full datalasting ved å lese kildedatabasen tabell for tabell og skrive rader til Azure SQL-målet ved hjelp av bulkinnsetting. Under full last håndterer tjenesten store tabeller ved å dele dem opp i grupper. Indekser på målet deaktiveres under lastingen for å maksimere gjennomstrømmingen, og bygges deretter opp igjen. For svært store databaser (på TB-skala) bør De vurdere å bruke Azure Data Factory eller bacpac-eksporter til å forhåndslaste data og redusere kjøretiden for DMS.

Endringsdatafangst for synkronisering mens systemet er tilkoblet

Ved nettbaserte migreringer aktiverer DMS SQL Server Change Data Capture (CDC) på kilden for å fange opp INSERT-, UPDATE- og DELETE-operasjoner som skjer mens full last pågår. Når full last er fullført, spiller DMS av de innfangede endringene på målet og lukker gradvis avstanden. Når forsinkelsen nærmer seg null, er databasen klar for overgang. CDC krever at SQL Server Agent kjører, og at kildedatabasen er i full recovery-modus.

-- Enable CDC on source database
EXEC sys.sp_cdc_enable_db;

-- Enable CDC on specific table
EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'Orders',
  @role_name = NULL;

Overgang og validering

Når CDC-forsinkelsen er minimal, starter De overgangen i DMS-portalen. DMS slutter å ta imot nye CDC-hendelser, bruker eventuelle gjenværende endringer og markerer migreringen som fullført. På dette tidspunktet omdirigerer De tilkoblingsstrengene for programmet til Azure SQL-endepunktet. Kjør datavalideringsspørringer som sammenligner radantall og kontrollsumsaggregater mellom kilde og mål for kritiske tabeller. Behold kildedatabasen i skrivebeskyttet modus i 24–48 timer etter overgangen i tilfelle det blir nødvendig å rulle tilbake.

-- Validate row counts post-cutover
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME;

Ytelsesjustering etter migrering

Etter migreringen kan Azure SQL Database ha en annen ytelse enn SQL Server lokalt på grunn av ulike hurtigbuffere for spørringsplaner, statistikk og maskinvare. Kjør Database Experimentation Assistant (DEA) for å spille av arbeidsbelastningsspor på Azure-målet og sammenligne kjøringsplaner. Aktiver Automatic Tuning i Azure SQL slik at tjenesten automatisk kan opprette eller slette indekser og tvinge frem spørringsplaner uten regresjoner. Dette forbedrer ytelsen over tid uten manuell inngripen.

-- Enable Automatic Tuning on Azure SQL Database
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (
  FORCE_LAST_GOOD_PLAN = ON,
  CREATE_INDEX = ON,
  DROP_INDEX = OFF
);

Migrering av andre databasemotorer

DMS migrerer også åpen kildekode-motorer: MySQL til Azure Database for MySQL ved hjelp av mønsteret mysqldump + binlog replication, og PostgreSQL til Azure Database for PostgreSQL ved hjelp av logiske replikeringsspor. Ved migreringer fra MongoDB til Cosmos DB bruker De Cosmos DB for MongoDB-API-et og den opprinnelige mongodump / mongorestore-prosessen, eller MongoDB-koblingen i Azure Data Factory for inkrementell CDC. Test alltid migreringen på en kopi utenfor produksjon før De kjører den mot aktive data.

# Offline MySQL migration using mysqldump
mysqldump -h source-server -u admin -p \
  --single-transaction --routines --triggers \
  myDatabase > /tmp/myDatabase.sql

# Restore to Azure Database for MySQL
mysql -h myserver.mysql.database.azure.com \
  -u adminUser@myserver -p myDatabase < /tmp/myDatabase.sql

Kort kontroll

Test forståelsen Deres av konseptene i Microsoft Azure Fundamentals (AZ-900) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært at Azure Database Migration Service orkestrerer nettbaserte og frakoblede databasemigreringer, at forhåndsvurdering før migrering med DMA avdekker kompatibilitetsproblemer før migreringsvinduet, og at endringsdatafangst muliggjør overgang av produksjonsdatabaser med nesten ingen nedetid. Neste tema er optimalisering av Azure-kostnader.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Beste praksis for databasemigrering» gratis?

Ja – hele teksten i «Beste praksis for databasemigrering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Beste praksis for databasemigrering»?

Bruk Azure Database Migration Service til å migrere en SQL Server-database til Azure SQL med minimal nedetid, og løs vanlige problemer med skjema og kompatibilitet. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Beste praksis for databasemigrering»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Migreringsrammeverket med de seks R-ene
  2. Azure Migrate: Oppdagelse og vurdering
  3. Rehost med Azure Migrate (lift and shift)
  4. Beste praksis for databasemigrering
← Tilbake til Cloud & IT Cert Prep