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. Sono disponibili servizi cloud di Microsoft Azure, ad esempio il Servizio Migrazione del database e l'opzione di migrazione in Database di Azure per PostgresSQL - Server flessibile, che può automatizzare in gran parte il processo complessivo di trasferimento dei dati dall'origine alla destinazione.

Server flessibile di Azure Database per PostgreSQL - migrazione

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 di PostgreSQL al servizio basato su Azure. Questa opzione è orientata alla migrazione offline dei database dall'origine alla destinazione. Per usare questa opzione, è necessario usare gli strumenti pg_dumpall e psql illustrati in precedenza per eseguire la migrazione dei database degli oggetti a livello di server che eseguono la migrazione al server flessibile.

Questa funzionalità è progettata con istanze di PostgreSQL esterne come origine e il server flessibile in cui è stato creato il progetto di migrazione come destinazione. Fondamentalmente per trasferire i dati nel server flessibile. I vantaggi dell'utilizzo di questo servizio rispetto all'esecuzione di un processo di dump e ripristino manuale sono dovuti alla gestione controllata della migrazione. Dopo la configurazione, 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 cut-over 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 selezionarli come gruppo anziché come gruppo alla volta. Questo raggruppamento di database può aiutare 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 del progetto di migrazione.

Quando si avvia il processo di convalida e migrazione, è possibile esaminare lo stato complessivo del processo usando il dashboard del progetto. Questo dashboard mostra come vengono convalidati i database e quindi durante la migrazione al nuovo server.

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

Queste informazioni verranno conservate dopo la migrazione, consentendo di tenere traccia dell'avanzamento complessivo. Le informazioni forniscono anche tutte le prove necessarie per modificare i processi di controllo circa il successo e la durata di qualsiasi lavoro svolto.

Strumenti PostgreSQL

In questa unità vengono esaminati gli strumenti principali che è possibile usare 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 per l'uso di pgcopydb sugli strumenti nativi forniti durante l'installazione di PostgreSQL, tra cui questi vantaggi.

  • Rimozione della necessità di file intermedi tramite pg_backup e pg_restore.
  • Creare la concorrenza degli indici per parallelizzare la creazione di indici nelle tabelle usando la funzionalità di synchronize__seqscans in PostgreSQL.
  • Copia di tabelle multithread in dati di partizione e trasferimento di tabelle di dimensioni maggiori in parallelo.
  • Per minimizzare la necessità di periodi di inattività prolungati, utilizza il Change Data Capture per la sincronizzazione dei dati.

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 diverse opzioni che consentono di configurare un'operazione di clonazione di base, fino all'automazione della configurazione della cattura delle modifiche ai dati per sincronizzare i dati e ridurre al minimo i tempi di inattività della migrazione. È anche possibile specificare le opzioni per parallelizzare il trasferimento dei dati per tabelle e le opzioni di trasferimento parallelo per tabelle, indici e oggetti di grandi dimensioni.

copy pgcopydb

La copia è un'opzione che consente una maggiore granularità del controllo quando si tratta di eseguire la migrazione del database o delle parti di esso. È possibile usare questa opzione di comando per selezionare gli schemi, le tabelle, i ruoli e così via per il trasferimento 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 quelli più piccoli come parte di un'attività di migrazione della 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.

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. Questo processo offre un modo di migrazione che riduce al minimo i rischi e ottimizza le probabilità di successo.

pgAdmin

pgAdmin è uno strumento di gestione ampiamente usato per interagire con i database PostgreSQL. Questo strumento consente la creazione e l'esecuzione di script pgsql. Lo strumento contiene una matrice di utili strumenti gui che possono essere usati per configurare, eseguire il backup e ripristinare i database PostgreSQL. In genere, installare pgAdmin nelle workstation amministrative. Questo strumento consente di registrare e connettersi a più server PostgreSQL, rendendolo una parte fondamentale del set di strumenti di migrazione.

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

pg_dump, pg_restore e psql

pg_dump è uno strumento da riga di comando installato insieme a un'istanza di PostgreSQL e può essere installato in base alle esigenze in una workstation amministrativa. Consente la creazione di backup coerenti del database 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 risultante .sql 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 di 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 e la larghezza di banda e la latenza di rete tra i componenti di 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 di PostgreSQL.

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