Limitazioni e problemi noti associati con 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.

    1. Prendere nota dell'indirizzo IP del Servizio Migrazione del database dopo aver completato il provisioning di un'istanza nel Servizio Migrazione del database.

    2. 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.

Screenshot della schermata di Servizio Migrazione del database che mostra l'opzione per selezionare le tabelle.

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.