Offline migrace SQL Serveru do služby SQL Managed Instance pomocí PowerShellu a služby Azure Database Migration Service

V tomto článku offline provedete offline migraci databáze Adventureworks2016 obnovené 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 offline.

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 kroky pro offline migraci, ale je také možné migrovat online.

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 podrobných informací v článku Vytvoření spravované instance Azure SQL.
  • 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.

Přihlášení k předplatnému Microsoft Azure

Přihlaste se ke svému předplatnému Azure pomocí PowerShellu. Další informace najdete v článku Přihlášení pomocí Azure PowerShellu.

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 služby Azure Database Migration Service

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.

Vytvoření objektu Informace o Připojení databáze pro zdrojová a cílová připojení

Objekt Informace o databázi Připojení ionu můžete vytvořit pomocí New-AzDmsConnInfo rutiny, která očekává následující parametry:

  • Typ serveru. Typ požadovaného připojení k databázi, například SQL, Oracle nebo MySQL. Použijte SQL pro SQL Server a Azure SQL.
  • Zdroj dat. Název nebo IP adresa instance SQL Serveru nebo instance služby Azure SQL Database.
  • AuthType. Typ ověřování pro připojení, který může být SqlAuthentication nebo WindowsAuthentication.
  • TrustServerCertificate. Tento parametr nastaví hodnotu, která označuje, jestli je kanál zašifrovaný při obejití procházení řetězu certifikátů k ověření důvěryhodnosti. Hodnota může být $true nebo $false.

Následující příklad vytvoří objekt Připojení ion Info pro zdrojový SQL Server s názvem MySourceSQLServer pomocí ověřování SQL:

$sourceConnInfo = New-AzDmsConnInfo -ServerType SQL `
  -DataSource MySourceSQLServer `
  -AuthType SqlAuthentication `
  -TrustServerCertificate:$true

Následující příklad ukazuje vytvoření informací o Připojení ionu pro spravovanou instanci Azure SQL s názvem targetmanagedinstance:

$targetResourceId = (Get-AzSqlInstance -Name "targetmanagedinstance").Id
$targetConnInfo = New-AzDmsConnInfo -ServerType SQLMI -MiResourceId $targetResourceId

Poskytnutí databází pro projekt migrace

Vytvořte seznam AzDataMigrationDatabaseInfo objektů, které určují databáze jako součást projektu Azure Database Migration Service, které lze poskytnout jako parametr pro vytvoření projektu. K vytvoření AzDataMigrationDatabaseInfomůžete použít rutinu New-AzDataMigrationDatabaseInfo .

Následující příklad vytvoří AzDataMigrationDatabaseInfo projekt pro databázi AdventureWorks2016 a přidá ho do seznamu, který se má poskytnout jako parametr pro vytvoření projektu.

$dbInfo1 = New-AzDataMigrationDatabaseInfo -SourceDatabaseName AdventureWorks
$dbList = @($dbInfo1)

Vytvoření objektu projektu

Nakonec můžete vytvořit projekt služby Azure Database Migration Service s názvem MyDMSProject umístěný v oblasti USA – východ a New-AzDataMigrationProject přidat dříve vytvořená zdrojová a cílová připojení a seznam databází, které chcete migrovat.

$project = New-AzDataMigrationProject -ResourceGroupName myResourceGroup `
  -ServiceName $service.Name `
  -ProjectName MyDMSProject `
  -Location EastUS `
  -SourceType SQL `
  -TargetType SQLMI `
  -SourceConnection $sourceConnInfo `
  -TargetConnection $targetConnInfo `
  -DatabaseInfo $dbList

Vytvoření a spuštění úlohy migrace

Dále vytvořte a spusťte úlohu služby Azure Database Migration Service. Tento úkol vyžaduje informace o přihlašovacích údaji připojení pro zdroj i cíl, stejně jako seznam databázových tabulek, které se mají migrovat, a informace, které už jsou součástí projektu vytvořeného jako předpoklad.

Vytvoření parametrů přihlašovacích údajů pro zdroj a cíl

Vytvořte přihlašovací údaje zabezpečení připojení jako objekt PSCredential .

Následující příklad ukazuje vytvoření OBJEKTŮ PSCredential pro zdrojová i cílová připojení a poskytuje hesla jako řetězcové proměnné $sourcePassword a $targetPassword.

$secpasswd = ConvertTo-SecureString -String $sourcePassword -AsPlainText -Force
$sourceCred = New-Object System.Management.Automation.PSCredential ($sourceUserName, $secpasswd)
$secpasswd = ConvertTo-SecureString -String $targetPassword -AsPlainText -Force
$targetCred = New-Object System.Management.Automation.PSCredential ($targetUserName, $secpasswd)

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 pomocí rutiny New-AzDmsFileShare zálohovat zdrojové databáze.

$backupPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$backupCred = New-Object System.Management.Automation.PSCredential ($backupUserName, $backupPassword)

$backupFileSharePath="\\10.0.0.76\SharedBackup"
$backupFileShare = New-AzDmsFileShare -Path $backupFileSharePath -Credential $backupCred

Vytvoření vybraného databázového objektu

Dalším krokem je výběr zdrojových a cílových databází pomocí rutiny New-AzDmsSelectedDB .

Následující příklad slouží k migraci izolované databáze z SQL Serveru do spravované instance Azure SQL:

$selectedDbs = @()
$selectedDbs += New-AzDmsSelectedDB -MigrateSqlServerSqlDbMi `
  -Name AdventureWorks2016 `
  -TargetDatabaseName AdventureWorks2016 `
  -BackupFileShare $backupFileShare `

Pokud celá instance SQL Serveru potřebuje metodu "lift and shift" do spravované instance Azure SQL, zobrazí se následující smyčka pro převzetí všech databází ze zdroje. V následujícím příkladu zadejte podrobnosti o zdrojovém SQL Serveru pro $Server, $SourceUserName a $SourcePassword.

$Query = "(select name as Database_Name from master.sys.databases where Database_id>4)";
$Databases= (Invoke-Sqlcmd -ServerInstance "$Server" -Username $SourceUserName
-Password $SourcePassword -database master -Query $Query)
$selectedDbs=@()
foreach($DataBase in $Databases.Database_Name)
    {
      $SourceDB=$DataBase
      $TargetDB=$DataBase

$selectedDbs += New-AzureRmDmsSelectedDB -MigrateSqlServerSqlDbMi `
                                              -Name $SourceDB `
                                              -TargetDatabaseName $TargetDB `
                                              -BackupFileShare $backupFileShare
      }

Identifikátor URI SAS pro kontejner Azure Storage

Vytvořte proměnnou obsahující identifikátor URI SAS, který poskytuje službě Azure Database Migration Service přístup ke kontejneru účtu úložiště, do kterého služba nahrává záložní soubory.

$blobSasUri="https://mystorage.blob.core.windows.net/test?st=2018-07-13T18%3A10%3A33Z&se=2019-07-14T18%3A10%3A00Z&sp=rwdl&sv=2018-03-28&sr=c&sig=qKlSA512EVtest3xYjvUg139tYSDrasbftY%3D"

Poznámka:

Azure Database Migration Service nepodporuje použití tokenu SAS na úrovni účtu. Pro kontejner účtu úložiště musíte použít identifikátor URI SAS. Zjistěte, jak získat identifikátor URI SAS pro kontejner objektů blob.

Další požadavky na konfiguraci

Je potřeba vyřešit několik dalších požadavků:

  • Vyberte přihlášení. Vytvořte seznam přihlášení, která se mají migrovat, jak je znázorněno v následujícím příkladu:

    $selectedLogins = @("user1", "user2")
    

    Důležité

    Služba Azure Database Migration Service v současné době podporuje pouze migraci přihlášení SQL.

  • Vyberte úlohy agenta. Vytvořte seznam úloh agenta, které se mají migrovat, jak je znázorněno v následujícím příkladu:

    $selectedAgentJobs = @("agentJob1", "agentJob2")
    

    Důležité

    Služba Azure Database Migration Service v současné době podporuje pouze úlohy s kroky úlohy subsystému T-SQL.

Vytvoření a spuštění úlohy migrace

Pomocí rutiny New-AzDataMigrationTask vytvořte a spusťte úlohu migrace.

Zadání parametrů

Rutina New-AzDataMigrationTask očekává následující parametry:

  • TaskType. Typ úlohy migrace, která se má vytvořit pro SQL Server do Azure SQL Managed Instance typu MigrateSqlServerSqlDbMi , se očekává.
  • Název skupiny prostředků Název skupiny prostředků Azure, ve které se má úloha vytvořit.
  • ServiceName. Instance služby Azure Database Migration Service, ve které se má úloha vytvořit.
  • ProjectName. Název projektu služby Azure Database Migration Service, ve kterém se má úkol vytvořit.
  • TaskName. Název úkolu, který se má vytvořit.
  • Zdroj Připojení ion. AzDmsConnInfo objekt představující zdrojové připojení SQL Serveru.
  • Cíl Připojení ion. Objekt AzDmsConnInfo představující cílové připojení ke službě Azure SQL Managed Instance
  • SourceCred. Objekt PSCredential pro připojení ke zdrojovému serveru
  • TargetCred. Objekt PSCredential pro připojení k cílovému serveru.
  • SelectedDatabase. AzDataMigrationSelectedDB objekt představující mapování zdrojové a cílové databáze.
  • BackupFileShare. Objekt FileShare představující místní síťovou sdílenou složku, do které může služba Azure Database Migration Service převést zálohy zdrojové databáze.
  • BackupBlobSasUri. Identifikátor URI SAS, který poskytuje službě Azure Database Migration Service přístup ke kontejneru účtu úložiště, do kterého služba nahrává záložní soubory. Zjistěte, jak získat identifikátor URI SAS pro kontejner objektů blob.
  • SelectedLogins. Seznam vybraných přihlášení k migraci
  • SelectedAgentJobs. Seznam vybraných úloh agenta, které se mají migrovat
  • SelectedLogins. Seznam vybraných přihlášení k migraci
  • SelectedAgentJobs. Seznam vybraných úloh agenta, které se mají migrovat

Vytvoření a spuštění úlohy migrace

Následující příklad vytvoří a spustí úlohu offline migrace s názvem myDMSTask:

$migTask = New-AzDataMigrationTask -TaskType MigrateSqlServerSqlDbMi `
  -ResourceGroupName myResourceGroup `
  -ServiceName $service.Name `
  -ProjectName $project.Name `
  -TaskName myDMSTask `
  -SourceConnection $sourceConnInfo `
  -SourceCred $sourceCred `
  -TargetConnection $targetConnInfo `
  -TargetCred $targetCred `
  -SelectedDatabase  $selectedDbs `
  -BackupFileShare $backupFileShare `
  -BackupBlobSasUri $blobSasUri `
  -SelectedLogins $selectedLogins `
  -SelectedAgentJobs $selectedJobs `

Monitorování migrace

Pokud chcete monitorovat migraci, proveďte následující úlohy.

  1. Sloučit všechny podrobnosti o migraci do proměnné s názvem $CheckTask.

    Pokud chcete zkombinovat podrobnosti o migraci, jako jsou vlastnosti, stav a informace o databázi přidružené k migraci, použijte následující fragment kódu:

    $CheckTask = Get-AzDataMigrationTask -ResourceGroupName myResourceGroup `
                                         -ServiceName $service.Name `
                                         -ProjectName $project.Name `
                                         -Name myDMSTask `
                                         -ResultType DatabaseLevelOutput `
                                         -Expand
    Write-Host ‘$CheckTask.ProjectTask.Properties.Output’
    
  2. $CheckTask Pomocí proměnné získáte aktuální stav úlohy migrace.

    Pokud chcete použít $CheckTask proměnnou k získání aktuálního stavu úlohy migrace, můžete monitorovat úlohu migrace spuštěnou dotazem na vlastnost stavu úlohy, jak je znázorněno v následujícím příkladu:

    if (($CheckTask.ProjectTask.Properties.State -eq "Running") -or ($CheckTask.ProjectTask.Properties.State -eq "Queued"))
    {
      Write-Host "migration task running"
    }
    else if($CheckTask.ProjectTask.Properties.State -eq "Succeeded")
    {
      Write-Host "Migration task is completed Successfully"
    }
    else if($CheckTask.ProjectTask.Properties.State -eq "Failed" -or $CheckTask.ProjectTask.Properties.State -eq "FailedInputValidation" -or $CheckTask.ProjectTask.Properties.State -eq "Faulted")
    {
      Write-Host "Migration Task Failed"
    }
    

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ší kroky

Další informace o službě Azure Database Migration Service najdete v článku Co je služba Azure Database Migration Service?

Informace o dalších scénářích migrace (zdrojových/cílových párů) najdete v průvodci migrací databází Microsoftu.