Condividi tramite


Eseguire la migrazione di database su larga scala usando l’automazione (anteprima)

L'estensione di migrazione di Azure SQL per Azure Data Studio mette insieme un'esperienza semplificata di valutazione, generazione di consigli di Azure e migrazione che offre le capacità seguenti:

  • Un meccanismo di valutazione avanzato può valutare le istanze di SQL Server, identificando i database pronti per la migrazione alle destinazioni dell’SQL Server di Azure.

  • Un modulo di consiglio SKU (anteprima) che raccoglie i dati sulle prestazioni dall'istanza di SQL Server di origine locale e quindi genera consigli sullo SKU di dimensioni corrette in base alla destinazione Azure SQL.

  • Un servizio di Azure affidabile basato sul servizio di migrazione del database di Azure che orchestra le attività di spostamento dati per offrire un'esperienza di migrazione senza problemi.

  • La possibilità di eseguire sia migrazioni online (per le migrazioni che comportano tempi di inattività minimi) che offline (per le migrazioni in cui il tempo di inattività persiste per tutta la migrazione) per soddisfare i requisiti aziendali.

  • La flessibilità di creare e configurare il runtime di integrazione self-hosted per fornire il proprio ambiente di calcolo per l'accesso a SQL Server di origine e ai backup nell'ambiente locale.

Con strumenti di automazione come PowerShell - Modulo del servizio Azure DataMigration o interfaccia della riga di comando di Azure, è possibile applicare le funzionalità dell'estensione Migrazione Azure SQL insieme al Servizio Migrazione del database di Azure per eseguire la migrazione di uno o più database su larga scala (inclusi i database in più istanze di SQL Server).

È possibile fare riferimento agli script di esempio seguenti per soddisfare lo scenario di migrazione usando Azure PowerShell o l'interfaccia della riga di comando di Azure:

Scenario di migrazione Linguaggio di scripting
Valutazione SQL Server PowerShell / Interfaccia della riga di comando di Azure
Da SQL Server a Istanza gestita di SQL di Azure con (usando la condivisione di file) PowerShell / Interfaccia della riga di comando di Azure
Da SQL Server a Istanza gestita di SQL di Azure (con Archiviazione di Azure) PowerShell / Interfaccia della riga di comando di Azure
DA SQL Server a SQL Server in Azure Macchine virtuali (tramite condivisione file) PowerShell / Interfaccia della riga di comando di Azure
Da SQL Server su Macchine virtuali di Azure (usando l’Archiviazione di Azure) PowerShell / Interfaccia della riga di comando di Azure
Da SQL Server al database SQL di Azure PowerShell / Interfaccia della riga di comando di Azure
Consigli SKU (anteprima) PowerShell / Interfaccia della riga di comando di Azure
Automazione della migrazione end-to-end PowerShell / Interfaccia della riga di comando di Azure
Automazione della migrazione end-to-end per più database PowerShell / Interfaccia della riga di comando di Azure

Prerequisiti

I prerequisiti comuni in tutti gli scenari di migrazione supportati tramite Azure PowerShell o l'interfaccia della riga di comando di Azure sono:

  • Assicurarsi che un account Azure sia assegnato a uno dei ruoli predefiniti elencati di seguito:

    • Contributore per l’Istanza gestita di SQL di Azure di destinazione, SQL Server in Azure Macchine virtuali o database SQL di Azure e account di archiviazione per caricare i file di backup del database dalla condivisione di rete SMB (non applicabile per database SQL di Azure).

    • Ruolo lettore per i gruppi di risorse di Azure contenenti l’Istanza gestita di SQL di Azure di destinazione, SQL Server in Azure Macchine virtuali o database SQL di Azure.

    • Ruolo proprietario o Collaboratore per la sottoscrizione di Azure.

    L'account Azure è necessario solo quando si eseguono i passaggi di migrazione e non è necessario per la valutazione o il processo di consiglio di Azure.

  • Creare un'Istanza gestita di Azure SQL, un server SQL su macchina virtuale Azure o un database SQL di Azure di destinazione

    Se la destinazione è il database SQL di Azure è necessario eseguire la migrazione dello schema del database dall'origine alla destinazione usando l'estensione dacpac di SQL Server o l'estensione SQL Progetti per Azure Data Studio.

    Se si dispone di una macchina virtuale di Azure esistente, questa deve essere registrata con SQL IaaS Agent in modalità di gestione completa.

  • Se la destinazione è Istanza gestita di SQL di Azure o SQL Server nella macchina virtuale di Azure, assicurarsi che gli account di accesso usati per connettere l'istanza di SQL Server di origine siano membri del ruolo del server sysadmin o dispongano dell'autorizzazione CONTROL SERVER.

  • Se la destinazione è database SQL di Azure, assicurarsi che l'account di accesso usato per connettere l'istanza di SQL Server di origine sia un membro e che l'account db_datareader di accesso per il server SQL di destinazione sia db_owner.

  • Usare una delle opzioni di archiviazione seguenti per i file di backup completi del database e del log delle transazioni:

    • Condivisione di rete SMB

    • Condivisione file o contenitore BLOB dell'account di archiviazione Azure

      • Se i file di backup del database sono specificati in una condivisione di rete SMB, creare un account di archiviazione di Azure che consenta al Servizio Migrazione del database di caricare i file di backup. Assicurarsi di creare l'account di archiviazione di Azure nella stessa area in cui viene creata l'istanza di Servizio Migrazione del database di Azure.

      • Assicurarsi che il contenitore BLOB dell'account di archiviazione di Azure venga usato esclusivamente per archiviare i file di backup. Qualsiasi altro tipo di file (txt, png, jpg e così via) interferisce con il processo di ripristino, causando un errore.

      • Il Servizio Migrazione del database di Azure non avvia alcun backup, ma usa i backup esistenti, che possono già fare parte del piano di ripristino di emergenza, per la migrazione.

      • Ogni backup può essere scritto in un file di backup separato o in più file di backup. Tuttavia, l’accodamento di più backup (ad esempio, completo e log delle transazioni) in un singolo supporto di backup non è supportato.

      • Usare backup compressi per ridurre la probabilità di potenziali problemi associati alla migrazione di backup di grandi dimensioni.

  • Assicurarsi che l'account di servizio che esegue l'istanza di SQL Server di origine abbia le autorizzazioni di lettura e scrittura sulla condivisione di rete SMB che contiene i file di backup del database.

  • Il certificato dell'istanza di SQL Server di origine di un database protetto da Transparent Data Encryption (TDE) deve essere migrato sull'Istanza gestita di SQL di Azure o SQL Server su macchina virtuale Azure di destinazione prima di migrare i dati. Per altre informazioni sulla migrazione di database abilitati per TDE, vedere Esercitazione: eseguire la migrazione di database abilitati per TDE (anteprima) ad Azure SQL in Azure Data Studio.

    Suggerimento

    Se il database contiene dati sensibili protetti da Always Encrypted, il processo di migrazione con Azure Data Studio con il Servizio Migrazione del database migra automaticamente le chiavi Always Encrypted all'istanza gestita di SQL di Azure a SQL Server sulla macchina virtuale di Azure di destinazione.

  • Se i backup del database si trovano in una condivisione file di rete, specificare un computer in cui installare un runtime di integrazione self-hosted per accedere ed eseguire la migrazione dei backup del database. I moduli di Azure PowerShell o dell'interfaccia della riga di comando di Azure forniscono le chiavi di autenticazione per registrare il runtime di integrazione self-hosted. In preparazione per la migrazione, assicurarsi che nel computer sul quale si prevede di installare il runtime di integrazione self-hosted siano abilitate le regole del firewall in uscita e i nomi di dominio seguenti:

    Nomi di dominio Porte in uscita Descrizione
    Cloud pubblico: {datafactory}.{region}.datafactory.azure.net
    oppure *.frontend.clouddatahub.net
    Azure per enti pubblici: {datafactory}.{region}.datafactory.azure.us
    Cina: {datafactory}.{region}.datafactory.azure.cn
    443 Richiesta dal runtime di integrazione self-hosted per connettersi al servizio Migrazione dei dati.
    Per una Data Factory appena creata nel cloud pubblico, individuare l’FQDN dalla chiave di runtime di integrazione self-hosted, che ha formato {datafactory}.{region}.datafactory.azure.net. Per i Data Factory precedenti, se l’FQDN non è visibile nella chiave di integrazione self-hosted, usare invece *.frontend.clouddatahub.net.
    download.microsoft.com 443 Richiesta dal runtime di integrazione self-hosted per il download degli aggiornamenti. Se l'aggiornamento automatico è stato disabilitato, è possibile evitare di configurare questo dominio.
    *.core.windows.net 443 Viene usato dal runtime di integrazione self-hosted che si connette all'account di archiviazione di Azure per il caricamento dei backup del database dalla condivisione di rete

    Se i file di backup del database sono già disponibili in un account di archiviazione di Azure, durante il processo di migrazione non è necessario un runtime di integrazione self-hosted.

  • Quando si utilizza il runtime di integrazione self-hosted, assicurarsi che il computer in cui è installato il runtime possa connettersi all'istanza di SQL Server di origine e alla condivisione di file di rete in cui si trovano i file di backup.

  • La porta 445 in uscita deve essere abilitata, per accedere alla condivisione di file di rete.

  • Se si usa il Servizio Migrazione del database di Azure per la prima volta, assicurarsi che il provider di risorse Microsoft.DataMigration sia registrato nella sottoscrizione. Per registrare il provider di risorse, è possibile effettuare i passaggi seguenti

    Se la destinazione di migrazione è il database SQL di Azure, non sono necessari backup per eseguirla. La migrazione al database SQL di Azure è considerata una migrazione logica che comporta la pre-creazione e lo spostamento dei dati del database (eseguito dal Servizio Migrazione del database).

Automatizzare le migrazioni dei database

Usando Azure PowerShell Az.DataMigration o l'interfaccia della riga di comando di Azure az datamigration, è possibile eseguire la migrazione dei database automatizzando la creazione del Servizio Migrazione del database di Azure, la configurazione delle migrazioni di database per la migrazione online e l'esecuzione di un cutover. Sono disponibili diversi altri comandi e funzionalità documentati in Esempi di Azure.

Esempio di automazione della migrazione di un database di SQL Server tramite l'interfaccia della riga di comando di Azure: passaggio 1: creare il Servizio Migrazione del database di Azure, che orchestra le attività di migrazione del database.

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

Passaggio 2: configurare e avviare la migrazione del database online da SQL Server locale (con backup in Archiviazione di Azure) a Istanza gestita di SQL di Azure.

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="myPassword" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

Passaggio 3: eseguire un cutover della migrazione dopo che tutti i backup vengono ripristinati in Istanza gestita di SQL di Azure.

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

Se viene visualizzato l'errore "La sottoscrizione non è registrata per l'uso dello spazio dei nomi "Microsoft.DataMigration". Vedere https://aka.ms/rps-not-found per informazioni su come registrare le sottoscrizioni, eseguire il comando seguente:

Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"