Problemi/limitazioni noti con le migrazioni online da PostgreSQL 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

  • Il server PostgreSQL di origine deve eseguire 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, è supportata la migrazione di PostgreSQL 9.5 a Database di Azure per PostgreSQL 9.6 o 10. 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 desidera eseguire la migrazione di quattro database, impostare il valore su almeno 4.
    • max_wal_senders: impostare il numero di database in esecuzione simultaneamente. Il valore consigliato è 10.
  • Aggiungere l'INDIRIZZO IP dell'agente DMS all'origine PostgreSQL pg_hba.conf.

    1. Prendere nota dell'indirizzo IP del servizio di gestione dei servizi di rete dopo aver completato il provisioning di un'istanza di Servizio Migrazione del database di Azure.

    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 avere il ruolo REPLICA nel 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 fino a 1 TB di dati da PostgreSQL a Database di Azure per PostgreSQL, usando un singolo servizio DMS.
  • DmS consente agli utenti di selezionare tabelle all'interno di un database di cui si vuole eseguire la migrazione. Screenshot della schermata D M S che mostra l'opzione per selezionare le tabelle.

Dietro le quinte è disponibile un comando pg_dump 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

È possibile includere un limite massimo di 7500 caratteri come parte del 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 , che tuttavia è inferiore. Se il numero di caratteri per le tabelle selezionate e non selezionate supera 7500, il comando pg_dump ha esito negativo con 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 non è presente alcuna chiave primaria nelle tabelle, le modifiche potrebbero non essere sincronizzate nel database di destinazione.

Soluzione alternativa: impostare temporaneamente una chiave primaria per la tabella per consentire alla migrazione di continuare. Rimuovere la chiave primaria al termine della migrazione dei dati.

Limitazioni con la migrazione online da AWS RDS PostgreSQL

Quando si tenta di eseguire una migrazione online da Amazon Web Service (AWS) Relational Database (RDS) a Database di Azure per PostgreSQL, si potrebbero riscontrare gli errori seguenti:

  • Errore: il valore predefinito della colonna '{column}' nella 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 differisce tra i database di origine e di destinazione.

    Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda allo schema nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online Database di Azure per PostgreSQL.

  • Errore: il database di destinazione '{database}' dispone di tabelle '{numero di tabelle}' mentre il database di origine '{database}' ha '{numero di tabelle}'. Il numero di tabelle nei database di origine e di destinazione deve corrispondere.

    Limitazione: questo errore si verifica quando il numero di tabelle differisce tra i database di origine e di destinazione.

    Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda allo schema nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online Database di Azure per PostgreSQL.

  • Errore: Il database di origine {database} è vuoto.

    Limitazione: questo errore si verifica quando il database di origine è vuoto. Probabilmente è stato selezionato il database errato come origine.

    Soluzione alternativa: controllare doppio il database di origine selezionato per la migrazione e quindi riprovare.

  • Errore: Il database di destinazione {database} è vuoto. Eseguire la migrazione dello schema.

    Limitazione: questo errore si verifica quando non è presente uno schema nel database di destinazione. Assicurarsi che lo schema nella destinazione corrisponda allo schema nell'origine.

    Soluzione alternativa: assicurarsi che lo schema nella destinazione corrisponda allo schema nell'origine. Per altre informazioni sulla migrazione dello schema, vedere la documentazione sulla migrazione online 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 tale aggiornamento verrà identificata dalla destinazione come aggiornamento che non ha aggiornato alcuna riga. Il risultato è un record scritto nella tabella eccezioni.
  • Se la tabella ha una colonna JSON , qualsiasi operazione DELETE o UPDATE in questa tabella può causare una migrazione non riuscita.
  • La migrazione di più tabelle con lo stesso nome, ma un caso diverso potrebbe causare un comportamento imprevedibile e non è supportato. Un esempio è l'uso di table1, TABLE1 e Table1.
  • Elaborazione delle modifiche di [CREATE | ALTER | DROP | La tabella TRUNCATE] non è supportata.
  • In Servizio Migrazione del database un'unica attività di migrazione può contenere fino a quattro database.
  • La migrazione della tabella pg_largeobject non è supportata.