Delen via


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

Belangrijk

U wordt aangeraden de nieuwe migratieservice in Azure Database for PostgreSQL te gebruiken voor een meer gestroomlijnde en efficiënte migratie-ervaring. Deze service vereenvoudigt het proces door ondersteuning te bieden voor verschillende bronomgevingen, waardoor u probleemloos kunt overstappen naar Azure Database for PostgreSQL.

In dit artikel worden bekende problemen en beperkingen beschreven die zijn gekoppeld aan onlinemigraties van PostgreSQL naar Azure Database for PostgreSQL met behulp van Azure Database Migration Service (DMS).

Configuratie van online migratie

  • De laagste Ondersteunde PostgreSQL-bronversies zijn 9.4 en de hoogste ondersteunde doelversie is 14.9.

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

  • Als u logische replicatie wilt inschakelen in het PostgreSQL-bronbestandpostgresql.conf, stelt u de volgende parameters in:

    Parameter Description
    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 bronPostgreSQL 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 pg_hba.conf bestand:

      host    all    172.16.136.18/10    md5
      host    replication postgres    172.16.136.18/10     md5
      
  • De gebruiker moet de REPLICATIErol op de server hebben 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 het DMS-scherm met de optie voor het kiezen van tabellen.

Achter de schermen gebruikt de pg_dump opdracht de dump van de geselecteerde tabellen met een van de volgende opties:

  • -T om de tabelnamen op te nemen die zijn gekozen in de gebruikersinterface
  • -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 die volgt op de -t of -T optie. De pg_dump-opdracht 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 pg_dump opdracht met een fout.

In het vorige voorbeeld is de pg_dump opdracht:

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, -Tspaties 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 online migratie van AWS RDS PostgreSQL

Wanneer u probeert een online migratie uit te voeren van Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL naar Azure Database for PostgreSQL, kunt de volgende fouten tegenkomen:

  • 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 doeldatabases.

    Tijdelijke oplossing: Zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron. Bekijk de online migratiedocumentatie van Azure Database for PostgreSQL voor meer informatie over het migreren van het schema.

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

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

    Tijdelijke oplossing: Zorg ervoor dat het schema op het doel overeenkomt met het schema op de bron. Bekijk de online migratiedocumentatie 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. Waarschijnlijk hebt u 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 er geen schema in de doeldatabase is. Zorg 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. Bekijk de online migratiedocumentatie 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, zijn het resultaat van DELETE- en UPDATE-recordbewerkingen onvoorspelbaar.

  • Het bijwerken van een primaire-sleutelsegment wordt genegeerd. Het toepassen van een dergelijke update wordt geïdentificeerd door het doel 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 heeft, kunnen verwijder- 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-DDLs worden niet ondersteund.

  • In Database Migration Service kan één migratieactiviteit slechts maximaal vier databases bevatten.

  • Migratie van de pg_largeobject-tabel wordt niet ondersteund.