Online migrace SQL Serveru do služby SQL Managed Instance pomocí služby PowerShell a Azure Database Migration Service
V tomto článku online migrujete databázi Adventureworks2016 obnovenou do místní instance SQL Serveru 2005 nebo novější do spravované instance Azure SQL Pomocí Microsoft Azure PowerShellu. Databáze z instance SQL Serveru můžete migrovat do spravované instance SQL pomocí Az.DataMigration
modulu v Microsoft Azure PowerShellu.
V tomto článku získáte informace o těchto tématech:
- Vytvořte skupinu prostředků.
- Vytvořte instanci služby Azure Database Migration Service.
- Vytvořte projekt migrace v instanci služby Azure Database Migration Service.
- Spusťte migraci online.
Tip
Ve službě Azure Database Migration Service můžete migrovat databáze offline nebo během online režimu. V offline migraci se výpadek aplikace spustí při spuštění migrace. Pokud chcete omezit prostoje na dobu potřebnou k přerušení provozu do nového prostředí po migraci, použijte online migraci. Doporučujeme otestovat offline migraci, abyste zjistili, jestli je výpadek přijatelný. Pokud očekávaný výpadek není přijatelný, proveďte online migraci.
Tento článek obsahuje postup online migrace, ale je také možné migrovat offline.
Požadavky
K provedení těchto kroků potřebujete:
SQL Server 2016 nebo novější (libovolná edice)
Místní kopie databáze AdventureWorks2016 , která je k dispozici ke stažení zde.
Pokud chcete povolit protokol TCP/IP, který je ve výchozím nastavení zakázaný při instalaci SQL Serveru Express. Podle článku Povolení nebo zakázání síťového protokolu serveru povolte protokol TCP/IP.
Konfigurace brány Windows Firewall pro přístup k databázovému stroji
Předplatné Azure. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.
Spravovaná instance SQL. Spravovanou instanci SQL můžete vytvořit podle podrobností v článku Vytvoření spravované instance ASQL.
Stažení a instalace data Pomocník s migrací verze 3.3 nebo novější
Virtuální síť Microsoft Azure vytvořená pomocí modelu nasazení Azure Resource Manager, který poskytuje službě Azure Database Migration Service připojení typu site-to-site k místním zdrojovým serverům pomocí ExpressRoute nebo VPN.
Dokončené posouzení místní databáze a migrace schématu pomocí služby Data Pomocník s migrací, jak je popsáno v článku Provedení posouzení migrace SQL Serveru.
Pokud chcete modul stáhnout a nainstalovat
Az.DataMigration
(verze 0.7.2 nebo novější) z Galerie prostředí PowerShell pomocí rutiny PowerShellu install-Module.Chcete-li zajistit, aby přihlašovací údaje použité pro připojení ke zdrojové instanci SQL Serveru měly oprávnění CONTROL SERVER .
Aby se zajistilo, že přihlašovací údaje používané pro připojení k cílové spravované instanci SQL mají oprávnění CONTROL DATABASE k cílovým databázím služby SQL Managed Instance.
Důležité
Pro online migrace už musíte mít nastavené přihlašovací údaje Microsoft Entra. Další informace najdete v článku Použití portálu k vytvoření aplikace Microsoft Entra a instančního objektu, který má přístup k prostředkům.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.
Pomocí příkazu vytvořte skupinu New-AzResourceGroup
prostředků.
Následující příklad vytvoří skupinu prostředků myResourceGroup v oblasti USA – východ.
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
Vytvoření instance DMS
Pomocí rutiny New-AzDataMigrationService
můžete vytvořit novou instanci služby Azure Database Migration Service.
Tato rutina očekává následující požadované parametry:
- Název skupiny prostředků Azure Pomocí
New-AzResourceGroup
příkazu můžete vytvořit skupinu prostředků Azure, jak je znázorněno dříve, a zadat její název jako parametr. - Název služby. Řetězec, který odpovídá požadovanému jedinečnému názvu služby pro službu Azure Database Migration Service.
- Umístění: Určuje umístění služby. Zadejte umístění datového centra Azure, například USA – západ nebo Jihovýchodní Asie.
- Skladová položka. Tento parametr odpovídá názvu skladové položky DMS. Aktuálně podporované názvy skladových položek jsou Basic_1vCore, Basic_2vCores GeneralPurpose_4vCores.
- Identifikátor virtuální podsítě. Pomocí této rutiny
New-AzVirtualNetworkSubnetConfig
můžete vytvořit podsíť.
Následující příklad vytvoří službu s názvem MyDMS ve skupině prostředků MyDMSResourceGroup umístěné v oblasti USA – východ pomocí virtuální sítě s názvem MyVNET a podsítě s názvem MySubnet.
$vNet = Get-AzVirtualNetwork -ResourceGroupName MyDMSResourceGroup -Name MyVNET
$vSubNet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vNet -Name MySubnet
$service = New-AzDms -ResourceGroupName myResourceGroup `
-ServiceName MyDMS `
-Location EastUS `
-Sku Basic_2vCores `
-VirtualSubnetId $vSubNet.Id`
Vytvoření projektu migrace
Po vytvoření instance služby Azure Database Migration Service vytvořte projekt migrace. Projekt služby Azure Database Migration Service vyžaduje informace o připojení pro zdrojové i cílové instance a také seznam databází, které chcete migrovat jako součást projektu. Definujte zdrojová a cílová připojení připojovací řetězec.
Následující skript definuje podrobnosti o připojení ke zdrojovému SQL Serveru:
# Source connection properties
$sourceDataSource = "<mysqlserver.domain.com/privateIP of source SQL>"
$sourceUserName = "domain\user"
$sourcePassword = "mypassword"
Následující skript definuje podrobnosti o připojení cílové služby SQL Managed Instance:
# Target MI connection properties
$targetMIResourceId = "/subscriptions/<subid>/resourceGroups/<rg>/providers/Microsoft.Sql/managedInstances/<myMI>"
$targetUserName = "<user>"
$targetPassword = "<password>"
Definování mapování zdrojové a cílové databáze
Poskytnutí databází, které se mají migrovat v tomto projektu migrace
Následující skript mapuje zdrojovou databázi na příslušnou novou databázi v cílové spravované instanci SQL se zadaným názvem.
# Selected databases (Source database name to target database name mapping)
$selectedDatabasesMap = New-Object System.Collections.Generic.Dictionary"[String,String]"
$selectedDatabasesMap.Add("<source database name>", "<target database name> ")
Pro více databází přidejte seznam databází do výše uvedeného skriptu pomocí následujícího formátu:
$selectedDatabasesMap = New-Object System.Collections.Generic.Dictionary"[String,String]"
$selectedDatabasesMap.Add("<source database name1>", "<target database name1> ")
$selectedDatabasesMap.Add("<source database name2>", "<target database name2> ")
Vytvoření projektu DMS
V instanci DMS můžete vytvořit projekt služby Azure Database Migration Service.
# Create DMS project
$project = New-AzDataMigrationProject `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-Location $dmsLocation `
-SourceType SQL `
-TargetType SQLMI `
# Create selected databases object
$selectedDatabases = @();
foreach ($sourceDbName in $selectedDatabasesMap.Keys){
$targetDbName = $($selectedDatabasesMap[$sourceDbName])
$selectedDatabases += New-AzDmsSelectedDB -MigrateSqlServerSqlDbMi `
-Name $sourceDbName `
-TargetDatabaseName $targetDbName `
-BackupFileShare $backupFileShare `
}
Vytvoření záložního objektu FileShare
Teď vytvořte objekt FileShare představující místní sdílenou složku sítě SMB, do které může služba Azure Database Migration Service zálohovat zdrojové databáze pomocí rutiny New-AzDmsFileShare.
# SMB Backup share properties
$smbBackupSharePath = "\\shareserver.domain.com\mybackup"
$smbBackupShareUserName = "domain\user"
$smbBackupSharePassword = "<password>"
# Create backup file share object
$smbBackupSharePasswordSecure = ConvertTo-SecureString -String $smbBackupSharePassword -AsPlainText -Force
$smbBackupShareCredentials = New-Object System.Management.Automation.PSCredential ($smbBackupShareUserName, $smbBackupSharePasswordSecure)
$backupFileShare = New-AzDmsFileShare -Path $smbBackupSharePath -Credential $smbBackupShareCredentials
Definování služby Azure Storage
Vyberte kontejner azure Storage, který se má použít k migraci:
# Storage resource id
$storageAccountResourceId = "/subscriptions/<subscriptionname>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<mystorage>"
Konfigurace aplikace Microsoft Entra
Zadejte požadované podrobnosti o ID Microsoft Entra pro online migraci služby SQL Managed Instance:
# AAD properties
$AADAppId = "<appid-guid>"
$AADAppKey = "<app-key>"
# Create AAD object
$AADAppKeySecure = ConvertTo-SecureString $AADAppKey -AsPlainText -Force
$AADApp = New-AzDmsAadApp -ApplicationId $AADAppId -AppKey $AADAppKeySecure
Vytvoření a spuštění úlohy migrace
Dále vytvořte a spusťte úlohu služby Azure Database Migration Service. Volání zdroje a cíle pomocí proměnných a výpis databázových tabulek, které se mají migrovat:
# Managed Instance online migration properties
$dmsTaskName = "testmigration1"
# Create source connection info
$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
-DataSource $sourceDataSource `
-AuthType WindowsAuthentication `
-TrustServerCertificate:$true
$sourcePasswordSecure = ConvertTo-SecureString -String $sourcePassword -AsPlainText -Force
$sourceCredentials = New-Object System.Management.Automation.PSCredential ($sourceUserName, $sourcePasswordSecure)
# Create target connection info
$targetConnInfo = New-AzDmsConnInfo -ServerType SQLMI `
-MiResourceId $targetMIResourceId
$targetPasswordSecure = ConvertTo-SecureString -String $targetPassword -AsPlainText -Force
$targetCredentials = New-Object System.Management.Automation.PSCredential ($targetUserName, $targetPasswordSecure)
Následující příklad vytvoří a spustí úlohu online migrace:
# Create DMS migration task
$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDbMiSync `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-TaskName $dmsTaskName `
-SourceConnection $sourceConnInfo `
-SourceCred $sourceCredentials `
-TargetConnection $targetConnInfo `
-TargetCred $targetCredentials `
-SelectedDatabase $selectedDatabases `
-BackupFileShare $backupFileShare `
-AzureActiveDirectoryApp $AADApp `
-StorageResourceId $storageAccountResourceId
Další informace naleznete v tématu New-AzDataMigrationTask.
Monitorování migrace
Pokud chcete monitorovat migraci, proveďte následující úlohy.
Kontrola stavu úkolu
# Get migration task status details
$migTask = Get-AzDataMigrationTask `
-ResourceGroupName $dmsResourceGroupName `
-ServiceName $dmsServiceName `
-ProjectName $dmsProjectName `
-Name $dmsTaskName `
-ResultType DatabaseLevelOutput `
-Expand
# Task state will be either of 'Queued', 'Running', 'Succeeded', 'Failed', 'FailedInputValidation' or 'Faulted'
$taskState = $migTask.ProjectTask.Properties.State
# Display task state
$taskState | Format-List
Seznam chyb získáte pomocí následujícího příkazu:-
# Get task errors
$taskErrors = $migTask.ProjectTask.Properties.Errors
# Display task errors
foreach($taskError in $taskErrors){
$taskError | Format-List
}
# Get database level details
$databaseLevelOutputs = $migTask.ProjectTask.Properties.Output
# Display database level details
foreach($databaseLevelOutput in $databaseLevelOutputs){
# This is the source database name.
$databaseName = $databaseLevelOutput.SourceDatabaseName;
Write-Host "=========="
Write-Host "Start migration details for database " $databaseName
# This is the status for that database - It will be either of:
# INITIAL, FULL_BACKUP_UPLOADING, FULL_BACKUP_UPLOADED, LOG_FILES_UPLOADING,
# CUTOVER_IN_PROGRESS, CUTOVER_INITIATED, CUTOVER_COMPLETED, COMPLETED, CANCELLED, FAILED
$databaseMigrationState = $databaseLevelOutput.MigrationState;
# Details about last restored backup. This contains file names, LSN, backup date, etc
$databaseLastRestoredBackup = $databaseLevelOutput.LastRestoredBackupSetInfo
# Details about last restored backup. This contains file names, LSN, backup date, etc
$databaseLastRestoredBackup = $databaseLevelOutput.LastRestoredBackupSetInfo
# Details about last Currently active/most recent backups. This contains file names, LSN, backup date, etc
$databaseActiveBackpusets = $databaseLevelOutput.ActiveBackupSets
# Display info
$databaseLevelOutput | Format-List
Write-Host "Currently active/most recent backupset details:"
$databaseActiveBackpusets | select BackupStartDate, BackupFinishedDate, FirstLsn, LastLsn -ExpandProperty ListOfBackupFiles | Format-List
Write-Host "Last restored backupset details:"
$databaseLastRestoredBackupFiles | Format-List
Write-Host "End migration details for database " $databaseName
Write-Host "=========="
}
Provedení přímé migrace
Při online migraci se provede úplná záloha a obnovení databází a pak pokračuje práce na obnovení transakčních protokolů uložených ve službě BackupFileShare.
Když se databáze ve službě Azure SQL Managed Instance aktualizuje s nejnovějšími daty a synchronizuje se se zdrojovou databází, můžete provést přímou migraci.
Následující příklad dokončí přímou\migraci. Uživatelé volají tento příkaz podle vlastního uvážení.
$command = Invoke-AzDmsCommand -CommandType CompleteSqlMiSync `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-DatabaseName "Source DB Name"
Odstranění instance služby Azure Database Migration Service
Po dokončení migrace můžete instanci služby Azure Database Migration Service odstranit:
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
Další materiály
Informace o dalších scénářích migrace (zdrojových/cílových párů) najdete v průvodci migrací databází Microsoftu.
Další kroky
Další informace o službě Azure Database Migration Service najdete v článku Co je služba Azure Database Migration Service?