Use Azure Database Migration Service to migrate to Azure SQL Database
Hvis du har råd til å koble fra databasen mens du overfører til Azure, har du noen verktøy du kan bruke.
I vårt sykkelproduksjonsscenario regnes HR-databasen som forretningskritisk, men brukes sjelden i helgene. Du har planlagt å utføre en frakoblet overføring mellom fredag kveld og mandag morgen, men du vil vurdere den beste overføringsmetoden.
Det antas at alle kontroller før migrering er gjort med Azure Migrate. Denne prosessen sikrer at funksjons- og kompatibilitetsproblemer løses.
Migrate using Azure Database Migration Service with Azure CLI
Azure Database Migration Service er en fullt administrert tjeneste designet for å muliggjøre sømløse migreringer fra flere databasekilder til Azure-dataplattformer med minimal nedetid. Du kan bruke Azure CLI eller PowerShell for å automatisere databasemigreringer, noe som gjør det ideelt for å migrere databaser i stor skala.
Azure CLI-utvidelsen az datamigration gir kommandoer for å opprette og administrere databasemigreringer til Azure SQL Database. Denne tilnærmingen er spesielt nyttig for:
- Automatisering av migreringer som en del av CI/CD-pipelines
- Migrering av flere databaser i stor skala
- Skripting av repeterbare migreringsprosesser
Forutsetning
Før du starter migrasjonen, sørg for at du har:
-
Azure CLI installert med utvidelsen
datamigration - Azure Database Migration Service opprettet i ditt abonnement
- Target Azure SQL Database provisjonert med skjemaet allerede distribuert
- Selvhostet integrasjonsruntime konfigurert for tilkobling til din kilde-SQL Server
For å installere Azure CLI datamigration-utvidelsen, kjør:
az extension add --name datamigration
Opprett databasi-migreringstjenesten
Først, opprett en Azure Database Migration Service for å orkestrere migreringsaktivitetene dine:
# Create the Azure Database Migration Service
az datamigration sql-service create \
--resource-group "<YourResourceGroup>" \ # Name of your Azure resource group
--sql-migration-service-name "<YourMigrationService>" \ # Name for the migration service
--location "<YourLocation>" # Azure region (e.g., eastus2, westus)
Migrer databaseskjemaet
Før du migrerer data, må du migrere databaseskjemaet fra kilden til målet. Bruk kommandoen az datamigration sql-server-schema :
# Migrate schema from source to target database
az datamigration sql-server-schema \
--action "MigrateSchema" \
--src-sql-connection-str "Server=<YourSourceServer>;Initial Catalog=<YourSourceDB>;User ID=<YourSourceUser>;Password=<YourSourcePassword>" \
--tgt-sql-connection-str "Server=<YourTargetServer>.database.windows.net;Initial Catalog=<YourTargetDB>;User ID=<YourTargetUser>;Password=<YourTargetPassword>"
Start databasemigreringen
Opprett en ny databasemigrering for å kopiere data fra kilden til målet:
# Create a database migration to Azure SQL Database
az datamigration sql-db create \
--resource-group "<YourResourceGroup>" \ # Name of your Azure resource group
--sqldb-instance-name "<YourTargetServer>" \ # Name of the target Azure SQL Database server
--target-db-name "<YourTargetDB>" \ # Name of the target database
--source-database-name "<YourSourceDB>" \ # Name of the source database
--source-sql-connection authentication="SqlAuthentication" \
data-source="<YourSourceServer>" \ # Source SQL Server hostname or IP
user-name="<YourSourceUser>" \ # Source SQL Server username
password="<YourSourcePassword>" \ # Source SQL Server password
encrypt-connection=true \
trust-server-certificate=true \
--target-sql-connection authentication="SqlAuthentication" \
data-source="<YourTargetServer>.database.windows.net" \ # Target Azure SQL Database server
user-name="<YourTargetUser>" \ # Target database username
password="<YourTargetPassword>" \ # Target database password
encrypt-connection=true \
trust-server-certificate=true \
--scope "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.Sql/servers/<YourTargetServer>" \
--migration-service "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.DataMigration/sqlMigrationServices/<YourMigrationService>"
Migrer spesifikke tabeller
For å migrere kun spesifikke tabeller, bruk parameteren --table-list :
# Create a database migration for specific tables
az datamigration sql-db create \
--resource-group "<YourResourceGroup>" \
--sqldb-instance-name "<YourTargetServer>" \
--target-db-name "<YourTargetDB>" \
--source-database-name "<YourSourceDB>" \
--source-sql-connection authentication="SqlAuthentication" \
data-source="<YourSourceServer>" \
user-name="<YourSourceUser>" \
password="<YourSourcePassword>" \
encrypt-connection=true \
trust-server-certificate=true \
--target-sql-connection authentication="SqlAuthentication" \
data-source="<YourTargetServer>.database.windows.net" \
user-name="<YourTargetUser>" \
password="<YourTargetPassword>" \
encrypt-connection=true \
trust-server-certificate=true \
--table-list "[Person].[Person]" "[Person].[EmailAddress]" "[Sales].[Customer]" \ # Specify tables to migrate
--scope "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.Sql/servers/<YourTargetServer>" \
--migration-service "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.DataMigration/sqlMigrationServices/<YourMigrationService>"
Databaseoverføringstjenesten optimaliserer overføringsprosessen ved å hoppe over tomme tabeller, selv om du velger dem.
Overføringsstatus
Det finnes noen statuser som holder deg oppdatert om fremdriften for overføringen.
Forbereder kopiering: Tjenesten er i ferd med å deaktivere autostater, utløsere og indekser i måltabellen.
Kopier: Datakopien fra kildedatabasen til måldatabasen pågår.
Kopi fullført: Datakopien er fullført, og tjenesten venter på at andre tabeller skal fullføre kopieringen.
Gjenoppbygging av indekser: Tjenesten gjenoppbygger indekser i måltabeller.
Vellykket: Alle data kopieres og indeksene bygges på nytt.
Monitor migration using Azure CLI
Du kan sjekke statusen på migreringen din ved å bruke kommandoen az datamigration sql-db show :
# Check the status of the database migration
az datamigration sql-db show \
--resource-group "<YourResourceGroup>" \
--sqldb-instance-name "<YourTargetServer>" \
--target-db-name "<YourTargetDB>" \
--expand "MigrationStatusDetails" # Include detailed migration status
Denne kommandoen returnerer detaljert informasjon om migrasjonen, inkludert nåværende status og eventuelle feil som er oppstått.
Vent på at migreringen er fullført
Du kan bruke kommandoen wait for å pause skriptkjøringen til migreringen er fullført:
# Wait for the migration to complete before continuing
az datamigration sql-db wait \
--resource-group "<YourResourceGroup>" \
--sqldb-instance-name "<YourTargetServer>" \
--target-db-name "<YourTargetDB>" \
--created # Wait until migration is created/completed
Avbryt en migrasjon
Hvis du må stoppe en pågående migrering:
# Cancel an in-progress migration
az datamigration sql-db cancel \
--resource-group "<YourResourceGroup>" \
--sqldb-instance-name "<YourTargetServer>" \
--target-db-name "<YourTargetDB>" \
--migration-operation-id "<YourMigrationOperationId>" # ID from the migration operation
Overvåke overføring fra Azure-portalen
Du kan også overvåke migreringsaktiviteten ved å bruke Azure Database Migration Service i Azure-portalen.
For å overvåke databasemigreringen din, gå til Azure-portalen og finn din instans av Database Migration Service. Når du har funnet tjenesten, kan du vise forekomstens oversikt. Velg Overvåk overføringer for å få tilgang til detaljert informasjon om den pågående databaseoverføringen.
Når overføringsstatusen er Vellykket, går du til målserveren og validerer måldatabasen. Kontroller databaseskjemaet og dataene.
Ytelseshensyn
Overføringshastigheten avhenger sterkt av målet azure SQL Database SKU og den selv vert for Integration Runtime. Vi anbefaler på det sterkeste at du skalerer opp databehandlingsressursene i Azure SQL Database før du starter overføringsprosessen for en optimal overføringsopplevelse.
Når du bestemmer deg for hvilken server som skal installeres den selvhostede integrasjonsruntime, må du sørge for at denne maskinen kan håndtere CPU- og minnebelastningen fra datakopieringsoperasjonen.
Azure SQL Database-overføringen kan være treg med et stort antall tabeller på grunn av tiden Azure Data Factory (ADF) tar for å starte aktiviteter, selv for små tabeller.
Tabeller med store BLOB-kolonner kan ikke overføres på grunn av tidsavbrudd.
Vi anbefaler opptil 10 samtidige databaseoverføringer per selvbetjent integreringskjøringstid på én enkelt datamaskin. Skaler ut den selvbetjente kjøretiden eller opprett separate forekomster på forskjellige datamaskiner for å øke de samtidige databaseoverføringene.
Migrer i stor skala ved hjelp av PowerShell
Du kan også utføre en offline migrering av databasen fra SQL Server on-premises til en Azure SQL-database ved å bruke PowerShell.
Følgende eksempel overfører AdventureWorks-databasen til Azure SQL Database.
# Set up secure credentials for source and target connections
$sourcePass = ConvertTo-SecureString "<YourSourcePassword>" -AsPlainText -Force
$targetPass = ConvertTo-SecureString "<YourTargetPassword>" -AsPlainText -Force
# Start the database migration to Azure SQL Database
New-AzDataMigrationToSqlDb `
-ResourceGroupName "<YourResourceGroup>" ` # Name of your Azure resource group
-SqlDbInstanceName "<YourTargetServer>" ` # Name of the target Azure SQL Database server
-Kind "SqlDb" `
-TargetDbName "<YourTargetDB>" ` # Name of the target database
-SourceDatabaseName "<YourSourceDB>" ` # Name of the source database
-SourceSqlConnectionAuthentication SQLAuthentication `
-SourceSqlConnectionDataSource "<YourSourceServer>" ` # Source SQL Server hostname or IP
-SourceSqlConnectionUserName "<YourSourceUser>" ` # Source SQL Server username
-SourceSqlConnectionPassword $sourcePass `
-Scope "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.Sql/servers/<YourTargetServer>" `
-TargetSqlConnectionAuthentication SQLAuthentication `
-TargetSqlConnectionDataSource "<YourTargetServer>.database.windows.net" `
-TargetSqlConnectionUserName "<YourTargetUser>" ` # Target database username
-TargetSqlConnectionPassword $targetPass `
-MigrationService "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.DataMigration/SqlMigrationServices/<YourMigrationService>"
Følgende eksempel overfører et delsett med tabeller fra AdventureWorks-databasen.
# Migrate specific tables from source to target database
New-AzDataMigrationToSqlDb `
-ResourceGroupName "<YourResourceGroup>" `
-SqlDbInstanceName "<YourTargetServer>" `
-Kind "SqlDb" `
-TargetDbName "<YourTargetDB>" `
-SourceDatabaseName "<YourSourceDB>" `
-SourceSqlConnectionAuthentication SQLAuthentication `
-SourceSqlConnectionDataSource "<YourSourceServer>" `
-SourceSqlConnectionUserName "<YourSourceUser>" `
-SourceSqlConnectionPassword $sourcePass `
-Scope "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.Sql/servers/<YourTargetServer>" `
-TargetSqlConnectionAuthentication SQLAuthentication `
-TargetSqlConnectionDataSource "<YourTargetServer>.database.windows.net" `
-TargetSqlConnectionUserName "<YourTargetUser>" `
-TargetSqlConnectionPassword $targetPass `
-TableList "[Person].[Person]", "[Person].[EmailAddress]" ` # Specify tables to migrate
-MigrationService "/subscriptions/<YourSubscription>/resourceGroups/<YourResourceGroup>/providers/Microsoft.DataMigration/SqlMigrationServices/<YourMigrationService>"
For å lære mer om databasemigreringskommandoer, se følgende lenker: PowerShell-modul for datamigrering og Azure CLI for datamigrering.