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í AzDataMigrationDatabaseInfo
můž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.
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’
$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.