Condividi tramite


Limitazioni e problemi noti associati con migrazioni online da PostgreSQL a Database di Azure per PostgreSQL

Importante

È consigliabile usare il nuovo servizio di migrazione in Database di Azure per PostgreSQL per un'esperienza di migrazione semplificata e più efficiente. Questo servizio semplifica il processo supportando un'ampia gamma di ambienti di origine e garantendo, quindi, una transizione senza problemi a Database di Azure per PostgreSQL.

Le sezioni seguenti illustrano i problemi noti e le limitazioni associati alle migrazioni online da PostgreSQL a Database di Azure per PostgreSQL.

Configurazione della migrazione online

  • Nel server PostgreSQL di origine deve essere in esecuzione la versione 9.4, 9.5, 9.6, 10 o 11. Per altre informazioni, vedere Versioni supportate del database PostgreSQL.

  • 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 nel file postgresql.config del server PostgreSQL di origine, impostare i parametri seguenti:

    • 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 quattro.
    • max_wal_senders: impostare il numero di database in esecuzione contemporaneamente. Il valore consigliato è 10.
  • Aggiungere l'indirizzo IP dell'agente del Servizio Migrazione del database al file pg_hba.conf del server PostgreSQL di origine.

    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 viene usato per includere i nomi di tabella selezionati nell'interfaccia utente
  • -t viene usato per escludere i nomi di tabella non selezionati dall'utente

Esiste un limite massimo di 7500 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 relative ai 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 verrà 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.