Limitazioni e problemi noti delle migrazioni online da PostgreSQL a Database di Azure per PostgreSQL
Importante
Consigliamo di usare il nuovo servizio di migrazione in Database di Azure per PostgreSQL per un’esperienza di migrazione più semplificata ed efficiente. Questo servizio semplifica il processo supportando un’ampia gamma di ambienti di origine, garantendo una transizione senza problemi a Database di Azure per PostgreSQL.
Questo articolo descrive i problemi noti e sulle limitazioni associate alle migrazioni online da PostgreSQL a Database di Azure per PostgreSQL con il Servizio Migrazione del database di Azure.
Configurazione della migrazione online
Le versioni di origine PostgreSQL più basse supportate sono 9.4 e la versione di destinazione più alta supportata è 14.9.
Sono supportate solo le migrazioni alla stessa versione o a una successiva. Ad esempio, la migrazione di PostgreSQL 9.5 in Database di Azure per PostgreSQL 9.6 o 10 non è supportata. La migrazione da PostgreSQL 11 a PostgreSQL 9.6 non è supportata.
Per abilitare la replica logica nell’origine PostgreSQL
postgresql.conf
, impostare i parametri seguenti:Parametro Descrizione wal_level
Impostare come logico. max_replication_slots
Impostare almeno il numero massimo di database per la migrazione. Se si vuole eseguire la migrazione di quattro database, impostare il valore almeno su 4
.max_wal_senders
Impostare il numero di database in esecuzione simultaneamente. Il valore consigliato è 10
.Aggiungere l'indirizzo IP dell'agente del Servizio Migrazione del database al server PostgreSQL di origine
pg_hba.conf
.Prendere nota dell'indirizzo IP del Servizio Migrazione del database dopo aver completato il provisioning di un'istanza nel Servizio Migrazione del database.
Aggiungere l'indirizzo IP al file
pg_hba.conf
:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
L'utente deve disporre del ruolo di REPLICA per il server che ospita il database di origine.
Gli schemi di database di origine e di destinazione devono corrispondere.
Limitazioni delle dimensioni
- È possibile eseguire la migrazione di un massimo di 1 TB di dati da PostgreSQL a Database di Azure per PostgreSQL usando un singolo Servizio Migrazione del database.
- Servizio Migrazione del database consente agli utenti di selezionare tabelle all'interno di un database di cui si vuole eseguire la migrazione.
Dietro le quinte c'è un comando pg_dump
che viene usato per eseguire il dump delle tabelle selezionate usando una delle opzioni seguenti:
-T
per includere i nomi di tabella selezionati nell'interfaccia utente-t
per escludere i nomi di tabella non selezionati dall'utente
Esiste un limite massimo di 7.500 caratteri che possono essere inclusi nel comando pg_dump
che segue l'opzione -t
o -T
. Il comando pg_dump
usa il conteggio dei caratteri per le tabelle selezionate o non selezionate, a seconda di quale sia il minore. Se il numero di caratteri per le tabelle selezionate e non selezionate supera i 7500, il comando pg_dump
ha esito negativo e viene visualizzato un errore.
Per l'esempio precedente, il comando pg_dump
sarà:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
Nel comando precedente il numero di caratteri è 55 (include virgolette doppie, spazi, -T
e barra)
Limitazioni dei tipi di dati
Limitazione: se nelle tabelle non sono presenti chiavi primarie, le modifiche potrebbero non essere sincronizzate con il database di destinazione.
Soluzione alternativa: impostare temporaneamente una chiave primaria per la tabella per consentire alla migrazione di continuare. Al termine della migrazione dei dati, rimuovere la chiave primaria.
Limitazioni della migrazione online dal database relazionale AWS PostgreSQL
Quando si tenta di eseguire una migrazione online dal database relazionale (RDS) Amazon Web Services (AWS) al Database di Azure per PostgreSQL, potrebbero verificarsi gli errori seguenti:
Errore: il valore predefinito della colonna "{column}" della tabella "{table}" nel database "{database}" è diverso nei server di origine e di destinazione. È "{value on source}" nell'origine e "{value on target}" nella destinazione.
Limitazione: questo errore si verifica quando il valore predefinito in uno schema di colonna è diverso nei database di origine e destinazione.
Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda a quello nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online di Database di Azure per PostgreSQL.
Errore: il database di destinazione "{database}" contiene "{number of tables}" tabelle mentre il database di origine "{database}" contiene "{number of tables}" tabelle. Il numero di tabelle nei database di origine e di destinazione deve corrispondere.
Limitazione: questo errore si verifica quando il numero di tabelle è diverso tra i database di origine e di destinazione.
Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda a quello nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online di Database di Azure per PostgreSQL.
Errore: il database di origine {database} è vuoto.
Limitazione: questo errore si verifica quando il database di origine è vuoto. È probabile che sia stato selezionato il database errato come origine.
Soluzione alternativa: controllare il database di origine selezionato per la migrazione e riprovare.
Errore: il database di destinazione {database} è vuoto. Eseguire la migrazione dello schema.
Limitazione: questo errore si verifica quando non ci sono schemi nel database di destinazione. Assicurarsi che lo schema nella destinazione corrisponda a quello nell'origine.
Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda a quello nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online di Database di Azure per PostgreSQL.
Altre limitazioni
Il nome del database non può includere un punto e virgola (
;
).Una tabella acquisita deve avere una chiave primaria. Se una tabella non contiene una chiave primaria, il risultato delle operazioni DELETE e UPDATE sui record sarà imprevedibile.
L'aggiornamento di un segmento di chiave primaria viene ignorato. L'applicazione di un aggiornamento di questo tipo viene identificata dalla destinazione come aggiornamento che non ha aggiornato alcuna riga. Il risultato è un record scritto nella tabella delle eccezioni.
Se la tabella contiene una colonna
JSON
, qualsiasi operazione ELIMINA o AGGIORNA in questa tabella può causare una migrazione non riuscita.La migrazione di più tabelle con lo stesso nome, ma con combinazioni di maiuscole/minuscole diverse potrebbe generare un comportamento imprevedibile e non è supportata. Un esempio è l'uso di table1, TABLE1 e Table1.
L’elaborazione delle modifiche della tabella DDL [ CREA | MODIFICA | ESCLUDI | TRONCA ] non è supportata.
In Servizio Migrazione del database, una singola attività di migrazione può contenere solo fino a quattro database.
La migrazione della tabella pg_largeobject non è supportata.