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-bronbestand
postgresql.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
.Noteer het DMS-IP-adres nadat u klaar bent met het inrichten van een exemplaar van Azure Database Migration Service.
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.
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, -T
spaties 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.