Bekende problemen/beperkingen met onlinemigraties van PostgreSQL naar Azure Database for PostgreSQL

Bekende problemen en beperkingen in verband met onlinemigraties van PostgreSQL naar Azure Database for PostgreSQL worden beschreven in de volgende secties.

Configuratie van onlinemigratie

  • Op de postgreSQL-bronserver moet versie 9.4, 9.5, 9.6, 10 of 11 worden uitgevoerd. Zie Ondersteunde PostgreSQL-databaseversies voor meer informatie.

  • Alleen migraties naar dezelfde of een hogere versie worden ondersteund. Het migreren van PostgreSQL 9.5 naar Azure Database for PostgreSQL 9.6 of 10 wordt bijvoorbeeld ondersteund. Migreren van PostgreSQL 11 naar PostgreSQL 9.6 wordt niet ondersteund.

  • Als u logische replicatie wilt inschakelen in het postgreSQL-bronbestand postgresql.conf , stelt u de volgende parameters in:

    • wal_level: Instellen als logisch.
    • max_replication_slots: stel ten minste het maximum aantal databases voor migratie in. Als u vier databases wilt migreren, stelt u de waarde in op ten minste 4.
    • max_wal_senders: stel het aantal databases in dat gelijktijdig wordt uitgevoerd. De aanbevolen waarde is 10.
  • Voeg het IP-adres van de DMS-agent toe aan de postgreSQL-bron pg_hba.conf.

    1. Noteer het DMS-IP-adres nadat u klaar bent met het inrichten van een exemplaar van Azure Database Migration Service.

    2. Voeg het IP-adres toe aan het bestand pg_hba.conf :

          host    all    172.16.136.18/10    md5
          host    replication postgres    172.16.136.18/10     md5
      
  • De gebruiker moet de rol REPLICATION hebben op de server die als host fungeert voor de brondatabase.

  • De bron- en doeldatabaseschema's moeten overeenkomen.

Groottebeperkingen

  • U kunt maximaal 1 TB aan gegevens migreren van PostgreSQL naar Azure Database for PostgreSQL met behulp van één DMS-service.
  • Met DMS kunnen gebruikers tabellen kiezen in een database die ze willen migreren. Schermopname van D M S-scherm met de optie voor het kiezen van tabellen.

Achter de schermen is er een pg_dump opdracht die wordt gebruikt om de dump van de geselecteerde tabellen te nemen met behulp van een van de volgende opties:

  • -T om de tabelnamen op te nemen die in de gebruikersinterface zijn gekozen
  • -t om de tabelnamen uit te sluiten die niet door de gebruiker zijn gekozen

Er is een maximumlimiet van 7500 tekens die kunnen worden opgenomen als onderdeel van de pg_dump opdracht na de - t of -T optie. De opdracht pg_dump gebruikt het aantal tekens voor geselecteerde of niet-geselecteerde tabellen, afhankelijk van wat lager is. Als het aantal tekens voor de geselecteerde en niet-geselecteerde tabellen groter is dan 7500, mislukt de opdracht pg_dump met een fout.

In het vorige voorbeeld is de opdracht pg_dump:

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

In de vorige opdracht is het aantal tekens 55 (inclusief dubbele aanhalingstekens, spaties, -T en slash)

Beperkingen voor gegevenstypen

Beperking: als er geen primaire sleutel voor tabellen is, worden wijzigingen mogelijk niet gesynchroniseerd met de doeldatabase.

Tijdelijke oplossing: stel tijdelijk een primaire sleutel in voor de tabel, zodat de migratie kan worden voortgezet. Verwijder de primaire sleutel nadat de gegevensmigratie is voltooid.

Beperkingen met onlinemigratie van AWS RDS PostgreSQL

Wanneer u een onlinemigratie probeert uit te voeren van Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL naar Azure Database for PostgreSQL, kunnen de volgende fouten optreden:

  • Fout: de standaardwaarde van kolom {column} in tabel {table} in database {database} verschilt op bron- en doelservers. De waarde {waarde op bron} in de bron en {waarde op doel} op het doel.

    Beperking: deze fout treedt op wanneer de standaardwaarde in een kolomschema verschilt tussen de bron- en doeldatabase.

    Tijdelijke oplossing: zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron. Zie de documentatie voor onlinemigratie van Azure Database for PostgreSQL voor meer informatie over het migreren van het schema.

  • Fout: de doeldatabase {database} bevat {aantal tabellen} en de brondatabase {database} bevat {number of tables} tabellen. Het aantal tabellen op de bron- en doeldatabase moet overeenkomen.

    Beperking: deze fout treedt op wanneer het aantal tabellen verschilt tussen de bron- en doeldatabase.

    Tijdelijke oplossing: zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron. Zie de documentatie voor onlinemigratie van Azure Database for PostgreSQL voor meer informatie over het migreren van het schema.

  • Fout: De brondatabase {database} is leeg.

    Beperking: deze fout treedt op wanneer de brondatabase leeg is. U hebt waarschijnlijk de verkeerde database als bron geselecteerd.

    Tijdelijke oplossing: controleer de brondatabase die u hebt geselecteerd voor migratie en probeer het opnieuw.

  • Fout: De doeldatabase {database} is leeg. Het schema migreren.

    Beperking: deze fout treedt op wanneer de doeldatabase geen schema bevat. Zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron.

    Tijdelijke oplossing: zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron. Zie de documentatie voor onlinemigratie van Azure Database for PostgreSQL voor meer informatie over het migreren van het schema.

Andere beperkingen

  • De databasenaam mag geen puntkomma bevatten (;).
  • Een vastgelegde tabel moet een primaire sleutel hebben. Als een tabel geen primaire sleutel heeft, is het resultaat van recordbewerkingen DELETE en UPDATE onvoorspelbaar.
  • Het bijwerken van een primair sleutelsegment wordt genegeerd. Het toepassen van een dergelijke update wordt door het doel geïdentificeerd als een update die geen rijen heeft bijgewerkt. Het resultaat is een record die naar de uitzonderingentabel is geschreven.
  • Als uw tabel een JSON-kolom bevat, kunnen alle DELETE- of UPDATE-bewerkingen in deze tabel leiden tot een mislukte migratie.
  • Migratie van meerdere tabellen met dezelfde naam, maar een andere case kan onvoorspelbaar gedrag veroorzaken en wordt niet ondersteund. Een voorbeeld is het gebruik van table1, TABLE1 en Table1.
  • Wijzigingsverwerking van [CREATE | ALTER | DROP | TRUNCATE] tabel-DTL's wordt niet ondersteund.
  • In Database Migration Service kan één migratieactiviteit maximaal vier databases bevatten.
  • Migratie van de pg_largeobject tabel wordt niet ondersteund.