Esercitazione: Eseguire la migrazione o l'aggiornamento Database di Azure per PostgreSQL - Server singolo a Database di Azure per PostgreSQL - Server singolo online usando il servizio migrazione tramite il portale di Azure

È possibile usare il Servizio Migrazione del database di Azure per eseguire la migrazione dei database da un'istanza di Database di Azure per PostgreSQL - Server singolo alla stessa versione o a una diversa di un'istanza di Database di Azure per PostgreSQL - Server singolo o di Database di Azure per PostgreSQL - Server flessibile con tempi di inattività minimi. In questa esercitazione si esegue la migrazione del database di esempio DVD Rental da Database di Azure per PostgreSQL v10 a Database di Azure per PostgreSQL - Server singolo usando l'attività di migrazione online del Servizio Migrazione del database di Azure.

In questa esercitazione verranno illustrate le procedure per:

  • Eseguire la migrazione dello schema di esempio con l'utilità pg_dump.
  • Creare un'istanza del servizio Migrazione del database di Azure.
  • Creare un progetto di migrazione nel Servizio Migrazione del database di Azure.
  • Eseguire la migrazione.
  • Monitorare la migrazione.
  • Eseguire la migrazione completa.

Nota

L'uso del Servizio Migrazione del database di Azure per eseguire una migrazione online richiede la creazione di un'istanza basata sul piano tariffario Premium. Il disco viene crittografato per impedire il furto dei dati durante il processo di migrazione

Importante

Per un'esperienza di migrazione ottimale, Microsoft consiglia di creare un'istanza del Servizio Migrazione del database di Azure nella stessa area di Azure del database di destinazione. Lo spostamento dei dati tra regioni o aree geografiche può rallentare il processo di migrazione e causare errori.

Importante

La migrazione da Database di Azure per PostgreSQL è supportata per PostgreSQL versione 9.x e versioni successive. È anche possibile usare questa esercitazione per eseguire la migrazione da un'istanza di Database di Azure per PostgreSQL a un'altra istanza di Database di Azure per PostgreSQL o a un'istanza Hyperscale (Citus). Si noti che la migrazione da PostgreSQL 9.5 e 9.6 richiede privilegi di replica logica aggiuntivi nell'istanza di origine.

Prerequisiti

Per completare questa esercitazione, è necessario:

  • Controllare lo stato degli scenari di migrazione supportati dal Servizio Migrazione del database di Azure per le combinazioni di migrazione e versione supportate.

  • Un'istanza di Database di Azure per PostgreSQL versione 10 e successive con il database DVD Rental.

    Si noti anche che la versione del database di Azure per PostgreSQL di destinazione deve essere uguale o successiva alla versione locale di PostgreSQL. Ad esempio, per PostgreSQL 10 è possibile eseguire la migrazione al Database di Azure per PostgreSQL 10 o 11 ma non al Database di Azure per PostgreSQL 9.6.

  • Creare un server di database di Azure per PostgreSQL o Creare un server di database di Azure per PostgreSQL - Hyperscale (Citus) come server di database di destinazione in cui eseguire la migrazione dei dati.

  • Creare una rete virtuale di Microsoft Azure per il Servizio Migrazione del database di Azure usando il modello di distribuzione Azure Resource Manager. Per altre informazioni sulla creazione di una rete virtuale, vedere la documentazione sulla rete virtuale e in particolare gli articoli di avvio rapido con istruzioni dettagliate.

  • Assicurarsi che le regole del gruppo di sicurezza di rete (NSG) per la rete virtuale non blocchino la porta in uscita 443 di ServiceTag per ServiceBus, Archiviazione e AzureMonitor. Per informazioni dettagliate sul filtro del traffico dei gruppi di sicurezza di rete della rete virtuale, vedere l'articolo Filtrare il traffico di rete con gruppi di sicurezza di rete.

  • Creare una regola del firewall a livello del server per l'origine del Database di Azure per PostgreSQL per consentire al Servizio Migrazione del database di Azure di accedere ai database di origine. Specificare l'intervallo di subnet della rete virtuale usato per il Servizio Migrazione del database di Azure.

  • Creare una regola del firewall a livello di server per la destinazione del Database di Azure per PostgreSQL per consentire al Servizio Migrazione del database di Azure di accedere ai database di destinazione. Specificare l'intervallo di subnet della rete virtuale usato per il Servizio Migrazione del database di Azure.

  • Abilitare la replica logica nell'origine Database di Azure per PostgreSQL.

  • Impostare i parametri del server seguenti nell'istanza di Database di Azure per PostgreSQL usata come origine:

    • max_replication_slots = [numero di slot], l'impostazione consigliata è 10 slot
    • max_wal_senders = [numero di attività simultanee]: il parametro max_wal_senders imposta il numero di attività simultanee che è possibile eseguire, si consiglia di impostare il valore su 10 attività

Nota

I parametri del server precedenti sono statici e richiederanno un riavvio dell'istanza di Database di Azure per PostgreSQL per renderli effettivi. Per altre informazioni sull'attivazione/disattivazione dei parametri del server, vedere Configurare i parametri del server di Database di Azure per PostgreSQL.

Importante

Per tutte le tabelle nel database esistente è necessaria una chiave primaria per garantire che le modifiche possano essere sincronizzate con il database di destinazione.

Eseguire la migrazione dello schema di esempio

Per completare tutti gli oggetti di database, ad esempio schemi di tabella, indici e stored procedure, è necessario estrarre lo schema dal database di origine e applicarlo al database.

  1. Usare il comando pg_dump -s per creare un file di dump dello schema per un database.

    pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
    

    Ad esempio, per creare un file di dump dello schema per il database dvdrental:

    pg_dump -O -h mypgserver-source.postgres.database.azure.com -U pguser@mypgserver-source -d dvdrental -s -x > dvdrentalSchema.sql
    

    Per altre informazioni sull'uso dell'utilità pg_dump, vedere gli esempi riportati nell'esercitazione su pg dump.

  2. Creare un database vuoto nell'ambiente di destinazione, ovvero il Database di Azure per PostgreSQL.

    Per informazioni dettagliate su come connettere e creare un database, vedere l'articolo Creare un server di Database di Azure per PostgreSQL nel portale di Azure o Creare un server di Database di Azure per PostgreSQL - Hyperscale (Citus) nel portale di Azure.

    Nota

    Un'istanza di Database di Azure per PostgreSQL - Hyperscale (Citus) contiene solo un database singolo: citus.

  3. Importare lo schema nel database di destinazione che è stato creato mediante il ripristino del file di dump dello schema.

    psql -h hostname -U db_username -d db_name < your_schema.sql
    

    Ad esempio:

    psql -h mypgserver-source.postgres.database.azure.com  -U pguser@mypgserver-source -d dvdrental citus < dvdrentalSchema.sql
    

    Nota

    Il servizio di migrazione gestisce internamente l'abilitazione/disabilitazione delle chiavi esterne e i trigger per garantire una migrazione affidabile e affidabile dei dati. Di conseguenza, non è necessario preoccuparsi di apportare modifiche allo schema del database di destinazione.

Registrare il provider di risorse

Prima di creare la prima istanza del servizio Migrazione del database, registrare il provider di risorse Microsoft.DataMigration.

  1. Accedere al portale di Azure. Cercare e selezionare Sottoscrizioni.

    Mostra le sottoscrizioni del portale

  2. Selezionare la sottoscrizione in cui si vuole creare l'istanza del Servizio Migrazione del database di Azure e quindi selezionare Provider di risorse.

    Visualizzare i provider di risorse

  3. Cercare migration e quindi selezionare Registra per Microsoft.DataMigration.

    Registrare il provider di risorse

Creare un'istanza del servizio Migrazione del database

  1. Nel portale di Azure selezionare + Crea una risorsa, cercare Servizio Migrazione del database di Azure e quindi selezionare Servizio Migrazione del database di Azure dall'elenco a discesa.

    Azure Marketplace

  2. Nella schermata Servizio Migrazione del database di Azure selezionare Crea.

    Creare l'istanza del Servizio Migrazione del database di Azure

  3. Nella schermata Crea servizio Migrazione specificare un nome, la sottoscrizione, un gruppo di risorse nuovo o esistente e la località per il servizio.

  4. Selezionare una rete virtuale esistente o crearne una nuova.

    La rete virtuale consente al Servizio Migrazione del database di Azure di accedere al server PostgreSQL di origine e all'istanza di Database di Azure per PostgreSQL di destinazione.

    Per altre informazioni su come creare una rete virtuale nel portale di Azure, vedere l'articolo Creare una rete virtuale con il portale di Azure.

  5. Selezione di un piano tariffario.

    Per altre informazioni sui costi e i piani tariffari, vedere la pagina relativa ai prezzi.

    Configurare le impostazioni dell'istanza del Servizio Migrazione del database di Azure

  6. Selezionare Rivedi e crea per creare il servizio.

    La creazione del servizio viene completata entro 10-15 minuti.

Creare un progetto di migrazione

Dopo aver creato il servizio, individuarlo nel portale di Azure, aprirlo e creare un nuovo progetto di migrazione.

  1. Nel portale di Azure selezionare Tutti i servizi, eseguire la ricerca di Servizio Migrazione del database di Azure e quindi selezionare Servizio Migrazione del database di Azure.

    Individuare tutte le istanze di Servizio Migrazione del database di Azure

  2. Nella schermata Servizi Migrazione del database di Azure cercare il nome dell'istanza di Servizio Migrazione del database di Azure appena creata, selezionare l'istanza e quindi selezionare + Nuovo progetto di migrazione.

  3. Nella schermata Nuovo progetto di migrazione specificare il nome del progetto, nella casella di testo Tipo del server di origine selezionare PostgreSQL e nella casella di testo Tipo del server di destinazione selezionare Database di Azure per PostgreSQL.

    Nota

    Scegliere PostgreSQL in Tipo del server di origine anche se il server di origine è un'istanza di Database di Azure per PostgreSQL.

  4. Nella sezione Scegli il tipo di attività selezionare Migrazione dei dati online.

    Creare un progetto del Servizio Migrazione del database di Azure

    Nota

    In alternativa, è possibile scegliere Crea solo il progetto per creare subito il progetto di migrazione ed eseguire la migrazione in un secondo momento.

  5. Selezionare Salva. Prendere nota dei requisiti per usare correttamente il Servizio Migrazione del database di Azure per la migrazione dei dati e quindi selezionare Crea ed esegui attività.

Specificare le informazioni di origine

  1. Nella schermata Aggiungi dettagli origine specificare i dettagli di connessione per l'istanza PostgreSQL di origine.

    Schermata Aggiungi dettagli origine

    Nota

    Le informazioni dettagliate, ad esempio "Nome del server", "Porta del server", "Nome database" e così via, sono disponibili portale del Database di Azure per PostgreSQL.

  2. Selezionare Salva.

Specificare i dettagli della destinazione

  1. Nella schermata Dettagli destinazione specificare i dettagli di connessione per il server Hyperscale (Citus) di destinazione, ovvero l'istanza di Hyperscale (Citus) di stato eseguito il provisioning e in cui è stato distribuito lo schema DVD Rentals tramite pg_dump.

    Schermata Dettagli destinazione

    Nota

    È possibile eseguire la migrazione da un'istanza di Database di Azure per PostgreSQL a un'altra istanza di Database di Azure per PostgreSQL - Server singolo o a un server Hyperscale (Citus).

  2. Selezionare Salva e quindi nella schermata Mappa ai database di destinazione eseguire il mapping del database di origine e di quello di destinazione per la migrazione.

    Se il database di destinazione contiene lo stesso nome del database di origine, il Servizio Migrazione del database di Azure seleziona il database di destinazione per impostazione predefinita.

    Schermata Mappa ai database di destinazione

  3. Selezionare Salva, quindi nella schermata Impostazioni di migrazione accettare i valori predefiniti.

    Schermata Impostazioni di migrazione

  4. Selezionare Salva, nella schermata Riepilogo della migrazione, nella casella di testo Nome attività, specificare un nome per l'attività di migrazione, quindi rivedere il riepilogo per verificare che i dettagli dell'origine e della destinazione corrispondano a quanto specificato in precedenza.

    Schermata Riepilogo della migrazione

Eseguire la migrazione

  • Selezionare Esegui migrazione.

Verrà visualizzata la finestra dell'attività di migrazione con lo Stato dell'attività che passerà a Backup in corso. È possibile che si verifichi l'errore seguente durante l'aggiornamento da Database di Azure per PostgreSQL 9.5 o 9.6:

Uno scenario ha segnalato un errore sconosciuto. 28000: nessuna voce pg_hba.conf per la connessione di replica dall'host "40.121.141.121", utente "sr"

Il motivo è che PostgreSQL non ha i privilegi appropriati per creare gli artefatti della replica logica necessari. Per abilitare i privilegi necessari, è possibile eseguire le operazioni seguenti:

  1. Aprire le impostazioni "Sicurezza connessione" per il server di origine Database di Azure per PostgreSQL da cui si sta tentando di eseguire la migrazione/aggiornamento.
  2. Aggiungere una nuova regola del firewall con un nome che termina con "_replrule" e aggiungere l'indirizzo IP del messaggio di errore ai campi relativi all'indirizzo IP iniziale e a quello finale. Per l'esempio di errore precedente:

Nome della regola del firewall = sr_replrule; IP iniziale = 40.121.141.121; IP finale IP = 40.121.141.121

  1. Fare clic su Salva e consentire il completamento della modifica.
  2. Riprovare a eseguire del Servizio Migrazione del database.

Monitorare la migrazione

  1. Nella schermata dell'attività di migrazione selezionare Aggiorna per aggiornare la visualizzazione finché nel campo Stato della migrazione non viene indicato Completata.

    Monitorare il processo di migrazione

  2. Al termine della migrazione, in Nome database selezionare un database specifico per ottenere lo stato di migrazione per le operazioni Caricamento completo dei dati e Sincronizzazione dei dati incrementale.

    Nota

    Caricamento completo indica lo stato di migrazione del carico iniziale, mentre Sincronizzazione dei dati incrementale indica lo stato di Change Data Capture (CDC).

    Dettagli caricamento completo dei dati

    Dettagli sincronizzazione dei dati incrementale

Eseguire il cutover della migrazione

Al termine del caricamento completo iniziale, i database vengono contrassegnati con Pronto per il cutover.

  1. Quando si è pronti per completare la migrazione del database, selezionare Avvia cutover.

  2. Attendere che il contatore Modifiche in sospeso mostri 0 per assicurarsi che tutte le transazioni in ingresso nel database di origine siano terminate, selezionare la casella di controllo Conferma e quindi selezionare Applica.

    Schermata Completa cutover

  3. Quando lo stato della migrazione del database è Completato, ricreare le sequenze (se applicabile) e connettere le applicazioni alla nuova istanza di destinazione di Database di Azure per PostgreSQL.

Nota

Il Servizio Migrazione del database di Azure può essere usato per eseguire aggiornamenti delle versioni principali con tempi di inattività ridotti in Database di Azure per PostgreSQL - Server singolo. Configurare prima di tutto un database di destinazione con la versione di PostgreSQL più recente, le impostazioni di rete e i parametri. Quindi, è possibile avviare la migrazione ai database di destinazione usando la procedura illustrata in precedenza. Dopo la migrazione al server di database di destinazione, è possibile aggiornare la stringa di connessione dell'applicazione in modo che punti a tale server.

Passaggi successivi