SQL Server online migrálása felügyelt SQL-példányra a PowerShell & Azure Database Migration Service használatával
Ebben a cikkben online migrálja az Adventureworks2016 adatbázist az SQL Server 2005 vagy újabb helyszíni példányára egy Felügyelt Azure SQL-példányba a Microsoft Azure PowerShell használatával. Adatbázisokat migrálhat egy SQL Server-példányból egy felügyelt SQL-példányba a Az.DataMigration
Microsoft Azure PowerShell moduljának használatával.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Hozzon létre egy erőforráscsoportot.
- Hozzon létre egy Azure Database Migration Service-példányt.
- Migrálási projekt létrehozása az Azure Database Migration Service egy példányában.
- Futtassa az áttelepítést online.
Tipp.
Az Azure Database Migration Service-ben az adatbázisokat offline vagy online állapotban is áttelepítheti. Offline migrálás esetén az alkalmazás állásideje az áttelepítés indításakor kezdődik. Ha az állásidőt a migrálás utáni új környezetre való átállás időtartamára szeretné korlátozni, használjon online migrálást. Javasoljuk, hogy tesztelje az offline migrálást annak megállapításához, hogy az állásidő elfogadható-e. Ha a várt állásidő nem elfogadható, végezze el az online migrálást.
Ez a cikk az online migrálás lépéseit ismerteti, de offline migrálásra is lehetőség van.
Előfeltételek
Az alábbi lépések végrehajtásához a következőkre van szüksége:
SQL Server 2016 vagy újabb (bármely kiadás).
Az AdventureWorks2016 adatbázis helyi példánya, amely innen tölthető le.
A TCP/IP protokoll engedélyezéséhez, amely alapértelmezés szerint le van tiltva az SQL Server Express telepítésével. Engedélyezze a TCP/IP protokollt a Kiszolgálói hálózati protokoll engedélyezése vagy letiltása című cikkben leírtak szerint.
A Windows tűzfal adatbázismotor-hozzáféréshez való konfigurálásához.
Azure-előfizetés. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
Felügyelt SQL-példány. Felügyelt SQL-példányt úgy hozhat létre, ha a Felügyelt ASQL-példány létrehozása című cikkben leírtakat követi.
A Data Migration Assistant 3.3-s vagy újabb verziójának letöltéséhez és telepítéséhez.
Az Azure Resource Manager üzemi modellel létrehozott Microsoft Azure-beli virtuális hálózat, amely az Azure Database Migration Service-nek helyek közötti kapcsolatot biztosít a helyszíni forráskiszolgálókkal expressRoute vagy VPN használatával.
A helyszíni adatbázis és séma migrálásának befejezett értékelése a Data Migration Assistant használatával, az SQL Server migrálási felmérésének elvégzéséről szóló cikkben leírtak szerint.
A modul (0.7.2-es vagy újabb verzió) letöltése és telepítése
Az.DataMigration
a PowerShell-galéria az Install-Module PowerShell-parancsmag használatával.Annak biztosítása érdekében, hogy a forrás SQL Server-példányhoz való csatlakozáshoz használt hitelesítő adatok rendelkeznek a CONTROL Standard kiadás RVER engedéllyel.
Annak biztosítása érdekében, hogy a felügyelt SQL-példány célpéldányához való csatlakozáshoz használt hitelesítő adatok rendelkezzenek a CONTROL DATABA Standard kiadás engedéllyel a felügyelt SQL-példányok céladatbázisaihoz.
Fontos
Az online migráláshoz már be kell állítania a Microsoft Entra hitelesítő adatait. További információ: A portál használatával létrehozhat egy Olyan Microsoft Entra-alkalmazást és szolgáltatásnevet, amely hozzáfér az erőforrásokhoz.
Erőforráscsoport létrehozása
Az Azure-erőforráscsoport egy logikai tároló, amelyben az Azure-erőforrások üzembe helyezése és kezelése történik.
Hozzon létre egy erőforráscsoportot a New-AzResourceGroup
parancs használatával.
Az alábbi példa létrehoz egy myResourceGroup nevű erőforráscsoportot az USA keleti régiójában.
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
DMS-példány létrehozása
A parancsmaggal létrehozhatja az New-AzDataMigrationService
Azure Database Migration Service új példányát.
Ez a parancsmag a következő szükséges paramétereket várja:
- Azure-erőforráscsoport neve. A parancs segítségével
New-AzResourceGroup
létrehozhat egy Azure-erőforráscsoportot a korábban bemutatott módon, és paraméterként megadhatja a nevét. - Szolgáltatásnév. Az Azure Database Migration Service kívánt egyedi szolgáltatásnevének megfelelő sztring.
- Hely. A szolgáltatás helyét adja meg. Adjon meg egy Azure-adatközpont helyét, például az USA nyugati régióját vagy Délkelet-Ázsiát.
- Termékváltozat. Ez a paraméter megfelel a DMS termékváltozat nevének. A jelenleg támogatott termékváltozatok neve Basic_1vCore, Basic_2vCores és GeneralPurpose_4vCores.
- Virtuális alhálózat azonosítója. A parancsmaggal
New-AzVirtualNetworkSubnetConfig
alhálózatot hozhat létre.
Az alábbi példa létrehoz egy MyDMS nevű szolgáltatást az USA keleti régiójában található MyDMSResourceGroup erőforráscsoportban egy MyVNET nevű virtuális hálózat és egy MySubnet nevű alhálózat használatával.
$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`
Migrálási projekt létrehozása
Az Azure Database Migration Service-példány létrehozása után hozzon létre egy migrálási projektet. Az Azure Database Migration Service-projektekhez kapcsolati adatokra van szükség a forrás- és célpéldányokhoz, valamint a projekt részeként migrálni kívánt adatbázisok listájához. Forrás- és célkapcsolati kapcsolati sztring definiálása.
A következő szkript határozza meg a forrás SQL Server-kapcsolat részleteit:
# Source connection properties
$sourceDataSource = "<mysqlserver.domain.com/privateIP of source SQL>"
$sourceUserName = "domain\user"
$sourcePassword = "mypassword"
A következő szkript határozza meg a felügyelt SQL-példány célkapcsolati adatait:
# Target MI connection properties
$targetMIResourceId = "/subscriptions/<subid>/resourceGroups/<rg>/providers/Microsoft.Sql/managedInstances/<myMI>"
$targetUserName = "<user>"
$targetPassword = "<password>"
Forrás- és céladatbázis-leképezés definiálása
Az áttelepítési projektben migrálandó adatbázisok megadása
Az alábbi szkript leképozza a forrásadatbázist a célként megadott felügyelt SQL-példány megfelelő új adatbázisára a megadott névvel.
# 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> ")
Több adatbázis esetén adja hozzá az adatbázisok listáját a fenti szkripthez a következő formátumban:
$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> ")
DMS-projekt létrehozása
Létrehozhat egy Azure Database Migration Service-projektet a DMS-példányon belül.
# 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 `
}
Backup FileShare-objektum létrehozása
Most hozzon létre egy FileShare-objektumot, amely a helyi SMB-hálózati megosztást jelöli, amelyhez az Azure Database Migration Service a New-AzDmsFileShare parancsmaggal készíthet biztonsági másolatot a forrásadatbázisról.
# 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
Az Azure Storage meghatározása
Válassza ki a migráláshoz használni kívánt Azure Storage-tárolót:
# Storage resource id
$storageAccountResourceId = "/subscriptions/<subscriptionname>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<mystorage>"
A Microsoft Entra App konfigurálása
Adja meg a Microsoft Entra-azonosító szükséges adatait egy felügyelt SQL-példány online migrálásához:
# AAD properties
$AADAppId = "<appid-guid>"
$AADAppKey = "<app-key>"
# Create AAD object
$AADAppKeySecure = ConvertTo-SecureString $AADAppKey -AsPlainText -Force
$AADApp = New-AzDmsAadApp -ApplicationId $AADAppId -AppKey $AADAppKeySecure
Migrálási feladat létrehozása és indítása
Ezután hozzon létre és indítsa el az Azure Database Migration Service-feladatot. Hívja meg a forrást és a célt változók használatával, és sorolja fel az áttelepítendő adatbázistáblákat:
# 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)
Az alábbi példa létrehoz és elindít egy online migrálási feladatot:
# 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
További információ: New-AzDataMigrationTask.
A migrálás monitorozása
A migrálás figyeléséhez hajtsa végre a következő feladatokat.
A tevékenység állapotának ellenőrzése
# 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
A hibák listájának lekéréséhez használja az alábbiakat:
# 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 "=========="
}
Az átállás végrehajtása
Online migrálás esetén az adatbázisok teljes biztonsági mentése és visszaállítása történik, majd a backupFileShare-ban tárolt tranzakciónaplók visszaállításán kell dolgoznia.
Ha egy felügyelt Azure SQL-példány adatbázisa frissül a legújabb adatokkal, és szinkronban van a forrásadatbázissal, átállást hajthat végre.
Az alábbi példa befejezi az átállás\migrálást. A felhasználók saját belátásuk szerint meghívják ezt a parancsot.
$command = Invoke-AzDmsCommand -CommandType CompleteSqlMiSync `
-ResourceGroupName myResourceGroup `
-ServiceName $service.Name `
-ProjectName $project.Name `
-TaskName myDMSTask `
-DatabaseName "Source DB Name"
Az Azure Database Migration Service példányának törlése
A migrálás befejezése után törölheti az Azure Database Migration Service-példányt:
Remove-AzDms -ResourceGroupName myResourceGroup -ServiceName MyDMS
További információforrások
További migrálási forgatókönyvekről (forrás-/célpárok) a Microsoft Database migrálási útmutatójában olvashat.
További lépések
Az Azure Database Migration Service-ről további információt a Mi az Azure Database Migration Service? című cikkben talál.