Identificare le opzioni dello strumento di migrazione

Completato

Sono disponibili molte opzioni per eseguire una migrazione da un server PostgreSQL al server flessibile di Database di Azure per PostgreSQL. Sono disponibili strumenti PostgreSQL nativi, ad esempio pg_dump, pgadmin e pg_restore. Alcuni servizi cloud di Microsoft Azure, ad esempio il Servizio Migrazione del database e l'opzione di migrazione nel server flessibile di Database di Azure per PostgresSQL, possono automatizzare in gran parte il processo generale di trasferimento dei dati dall'origine alla destinazione.

Migrazione al server flessibile di Database di Azure per PostgreSQL

All'interno del servizio Server flessibile di Database di Azure per PostgreSQL è disponibile una funzionalità nativa per supportare la migrazione di database da altre istanze PostgreSQL al servizio basato su Azure. Questa opzione è rivolta alla migrazione offline dei database dall'origine alla destinazione. Per usare questa opzione, è necessario adottare gli strumenti pg_dumpall e psql illustrati in precedenza per eseguire la migrazione dei database di oggetti a livello di server sul server flessibile.

Questa funzionalità è progettata con istanze PostgreSQL esterne come origine e il server flessibile su cui è stato creato il progetto di migrazione come destinazione. Sostanzialmente, per il pull dei dati nel server flessibile. I vantaggi dell'uso di questo servizio rispetto all'esecuzione di un processo di backup e ripristino manuale risiedono nella natura gestita della migrazione. Dopo la configurazione, il servizio monitora il processo per tutte le tabelle di cui viene eseguita la migrazione nel server flessibile, in modo da poter vedere facilmente quando è possibile eseguire il cutover a livello di applicazione.

Progetti di migrazione

Dopo aver ordinato la connettività, è sufficiente selezionare il database o i database di cui si vuole eseguire la migrazione al nuovo server. Nello screenshot seguente si noti che, se sono presenti più database che supportano diversi servizi che fanno parte di un sistema più ampio, è possibile scegliere di eseguirne la migrazione come gruppo anziché uno alla volta. Questo raggruppamento di database può contribuire non solo a velocizzare le migrazioni, ma anche a mantenere la coerenza logica durante le attività di migrazione.

Screenshot del portale di Azure che mostra la selezione del database nel progetto di migrazione.

Quando si avvia il processo di convalida e migrazione, è possibile esaminare lo stato generale del processo usando il dashboard del progetto. Il dashboard mostra i database convalidati e di cui viene eseguita la migrazione al nuovo server.

Screenshot del portale di Azure che mostra la convalida del database nel progetto di migrazione e lo stato della migrazione.

Queste informazioni verranno conservate dopo la migrazione, per poter tenere traccia dell'avanzamento generale. Le informazioni forniscono anche tutte le prove necessarie per modificare i processi di controllo circa la riuscita e la durata di ogni lavoro svolto.

Strumenti PostgreSQL

In questa unità vengono esaminati gli strumenti principali che possono essere usati per la migrazione dei dati da un server PostgreSQL al server flessibile di Database di Azure per PostgreSQL.

pgcopydb

Pgcopydb è un progetto open source in grado di automatizzare il processo di copia di un database tra server PostgreSQL. Esistono diversi vantaggi nell'uso di pgcopydb rispetto agli strumenti nativi forniti durante l'installazione di PostgreSQL, tra cui i seguenti.

  • Rimozione della necessità di file intermedi tramite pg_backup e pg_restore.
  • Concorrenza Create Index per parallelizzare la creazione di indici nelle tabelle usando la funzionalità synchronize__seqscans in PostgreSQL.
  • Copia di tabelle multithread in dati di partizione e trasferimento di tabelle di dimensioni maggiori in parallelo.
  • Change Data Capture per la sincronizzazione dei dati, al fine di ridurre al minimo la necessità di finestre di inattività prolungate.

Esistono due opzioni principali all'interno di pgcopydb che possono essere usate per la migrazione dei dati e del database da un server di origine alla destinazione. Queste opzioni sono clone e copy.

clone pgcopydb

Clone è l'opzione principale per copiare un intero database da un server di origine a una destinazione. Questo comando include diversi passaggi disponibili che consentono di configurare un'operazione di clonazione di base, fino ad automatizzare la configurazione di Change Data Capture per sincronizzare i dati e quindi ridurre al minimo il tempo di inattività della migrazione. È anche possibile specificare le opzioni per parallelizzare il trasferimento dei dati per tabella e le opzioni di trasferimento in parallelo per tabelle, indici e oggetti di grandi dimensioni.

copy pgcopydb

Copy è un'opzione che consente una maggiore granularità nel controllo al momento di eseguire la migrazione del database o di parti di esso. È possibile usare questa opzione di comando per selezionare gli schemi, le tabelle, i ruoli, ecc. da trasferire da un database del server di origine al server e al database di destinazione. Questo comando è utile negli scenari in cui un database di grandi dimensioni viene scomposto in database più piccoli nell’ambito di un'attività di migrazione per la modernizzazione delle applicazioni. In alternativa, un'attività di migrazione di consolidamento consente di eseguire la migrazione del contenuto di un database in schemi all'interno di un altro database.

Queste opzioni sono solo alcuni dei modi in cui pgcopydb può aiutare a migliorare il processo di migrazione dei database al server flessibile di Database di Azure per PostgreSQL. Tale processo offre una modalità di migrazione che riduce al minimo i rischi e ottimizza le probabilità di riuscita.

pgAdmin

pgAdmin è uno strumento di gestione ampiamente usato per interagire con i database PostgreSQL. Lo strumento consente di creare ed eseguire script pgsql. Lo strumento contiene una matrice di utili strumenti GUI che possono essere usati per configurare e ripristinare i database PostgreSQL ed eseguirne il backup. In genere, pgAdmin deve essere installato nelle workstation amministrative. Questo strumento consente di registrarsi e connettersi a più server PostgreSQL ed è quindi una parte fondamentale del set di strumenti di migrazione.

Screenshot di pgAdmin con menu che mostrano varie opzioni di amministrazione.

pg_dump, pg_restore e psql

pg_dump è uno strumento da riga di comando installato insieme a un'istanza PostgreSQL e può essere installato in base alle esigenze in una workstation amministrativa. Consente la creazione di backup del database coerenti da PostgreSQL anche quando si verifica un carico di lavoro simultaneo. Funziona con singoli database e consente di eseguire il backup di un intero database o di parti di esso.

Se si usa pg_dump per esportare gli oggetti dello schema, è possibile usare psql per eseguire il file .sql risultante nel database di destinazione per creare gli oggetti. Dopo questo passaggio, è possibile esaminare i modi per spostare i dati dall'origine al sistema di destinazione. I comandi da usare per l'esportazione di uno schema di database da un database e la relativa creazione in un altro possono essere visualizzati nell'esempio seguente.


pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql

psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql

Se si crea un dump completo del database di origine, si cerca di usare pg_restore per leggere il file risultante e ripristinare il database nell'istanza PostgreSQL di destinazione. Esistono diversi fattori che determinano il tempo necessario a queste attività per l'esecuzione di backup e ripristino per il dump. In particolare le dimensioni del database, le prestazioni del sottosistema di archiviazione, la larghezza di banda di rete e la latenza tra i componenti dell’elaborazione.

Nell'esempio seguente viene illustrato come creare un dump del database in un database personalizzato e quindi ripristinarlo in un altro server.


pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump

pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump

pg_dumpall

Mentre pg_dump viene usato per eseguire il dump di un singolo database, pg_dumpall viene usato per eseguire il dump di tutti i database in un singolo file di script che psql legge in una nuova istanza PostgreSQL.

Inoltre, è possibile usare pg_dumpall per generare file di script per oggetti a livello di server globale, ad esempio ruoli da cui i database possono dipendere quando viene eseguita la migrazione tra server.