Kända problem och begränsningar med onlinemigreringar från PostgreSQL till Azure Database for PostgreSQL
Viktigt!
Vi rekommenderar att du använder den nya migreringstjänsten i Azure Database for PostgreSQL för en mer effektiviserad och effektiv migreringsupplevelse. Den här tjänsten förenklar processen genom att stödja en mängd olika källmiljöer, vilket säkerställer en problemfri övergång till Azure Database for PostgreSQL.
Den här artikeln beskriver kända problem och begränsningar som är associerade med onlinemigreringar från PostgreSQL till Azure Database for PostgreSQL med hjälp av Azure Database Migration Service (DMS).
Konfiguration av onlinemigrering
De lägsta PostgreSQL-källversionerna som stöds är 9.4 och den högsta målversionen som stöds är 14.9.
Endast migreringar till samma version eller en högre version stöds. Migrering av PostgreSQL 9.5 till Azure Database for PostgreSQL 9.6 eller 10 stöds till exempel. Migrering från PostgreSQL 11 till PostgreSQL 9.6 stöds inte.
Om du vill aktivera logisk replikering i PostgreSQL-källfilen
postgresql.conf
anger du följande parametrar:Parameter Description wal_level
Ange som logiskt. max_replication_slots
Ange minst det maximala antalet databaser för migrering. Om du vill migrera fyra databaser anger du värdet till minst 4
.max_wal_senders
Ange antalet databaser som körs samtidigt. Det rekommenderade värdet är 10
.Lägg till DMS-agentens IP-adress i källan PostgreSQL
pg_hba.conf
.Notera DMS IP-adressen när du har etablerat en instans av Azure Database Migration Service.
Lägg till IP-adressen i
pg_hba.conf
filen:host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
Användaren måste ha REPLICATION-rollen på den server som är värd för källdatabasen.
Käll- och måldatabasscheman måste matcha.
Storleksgränser
- Du kan migrera upp till 1 TB data från PostgreSQL till Azure Database for PostgreSQL med hjälp av en enda Database Migration Service (DMS).
- MED DMS kan användarna välja tabeller i en databas som de vill migrera.
I bakgrunden pg_dump
tar kommandot dumpen av de valda tabellerna med något av följande alternativ:
-T
för att inkludera tabellnamnen som valts i användargränssnittet-t
för att exkludera tabellnamnen som inte har valts av användaren
Det finns en maxgräns på 7 500 tecken som kan inkluderas som en del av pg_dump
kommandot som följer -t
-T
eller-alternativet. Kommandot pg_dump
använder antalet tecken för tabeller som valts eller inte valts, beroende på vilket som är lägre. Om antalet tecken för de markerade och omarkerade tabellerna överskrider 7500 misslyckas pg_dump
kommandot med ett fel.
I föregående exempel pg_dump
skulle kommandot vara:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
I föregående kommando är antalet tecken 55 (inkluderar dubbla citattecken, blanksteg, -T
och snedstreck)
Begränsningar för datatyp
Begränsning: Om det inte finns någon primärnyckel i tabellerna kanske ändringarna inte synkroniseras till måldatabasen.
Lösning: Ange tillfälligt en primärnyckel för tabellen så att migreringen kan fortsätta. Ta bort primärnyckeln när datamigreringen är klar.
Begränsningar med onlinemigrering från AWS RDS PostgreSQL
När du försöker utföra en onlinemigrering från Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL till Azure Database for PostgreSQL kan följande fel uppstå:
Fel: Standardvärdet för kolumnen {column} i tabellen {table} i databasen {database} skiljer sig på käll- och målservrar. Det har ”{value on source}” i källan och ”{value on target}” i målet.
Begränsning: Det här felet uppstår när standardvärdet för ett kolumnschema skiljer sig mellan käll- och måldatabaserna.
Lösning: Kontrollera att schemat på målet matchar schemat på källan. Mer information om hur du migrerar schemat finns i dokumentationen Onlinemigrering i Azure Database for PostgreSQL.
Fel: Måldatabasen {database} har tabellerna {number of tables} medan källdatabasen {database} har tabellerna {number of tables}. Antalet tabeller i käll- och måldatabaserna måste vara lika många.
Begränsning: Det här felet uppstår när antalet tabeller skiljer sig mellan käll- och måldatabaserna.
Lösning: Kontrollera att schemat på målet matchar schemat på källan. Mer information om hur du migrerar schemat finns i dokumentationen Onlinemigrering i Azure Database for PostgreSQL.
Fel: Källdatabasen {database} är tom.
Begränsning: Det här felet uppstår när källdatabasen är tom. Du har förmodligen valt fel databas som källa.
Lösning: Dubbelkolla källdatabasen som du valde för migrering och försök sedan igen.
Fel: Måldatabasen {database} är tom. Migrera schemat.
Begränsning: Det här felet uppstår när det inte finns något schema i måldatabasen. Kontrollera att schemat för målet matchar schemat för källan.
Lösning: Kontrollera att schemat på målet matchar schemat på källan. Mer information om hur du migrerar schemat finns i dokumentationen Onlinemigrering i Azure Database for PostgreSQL.
Andra begränsningar
Databasnamnet får inte innehålla semikolon (
;
).En insamlad tabell måste ha en primärnyckel. Om en tabell inte har någon primärnyckel är resultatet av poståtgärderna DELETE och UPDATE oförutsägbara.
Uppdatering av ett primärnyckelsegment ignoreras. Att tillämpa en sådan uppdatering identifieras av målet som en uppdatering som inte uppdaterade några rader. Resultatet är en post som skrivits till undantagstabellen.
Om tabellen har en
JSON
kolumn kan alla DELETE- eller UPDATE-åtgärder i den här tabellen leda till en misslyckad migrering.Migrering av flera tabeller med samma namn, men med olika gemener eller versaler kan orsaka oförutsägbart beteende och stöds inte. Ett exempel är användningen av tabell1, TABELL1 och Tabell1.
Ändringsbearbetning av [ CREATE | ALTER | DROP | TRUNCATE ] tabell-DDL:er stöds inte.
I Database Migration Service kan en enskild migreringsaktivitet endast rymma upp till fyra databaser.
Migrering av tabellen pg_largeobject stöds inte.