Share via


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:

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.