Dela via


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.

Kända problem och begränsningar som är associerade med onlinemigreringar från PostgreSQL till Azure Database for PostgreSQL beskrivs i följande avsnitt.

Konfiguration av onlinemigrering

  • PostgreSQL-källservern måste köra version 9.4, 9.5, 9.6, 10 eller 11. Mer information finns i PostgreSQL-databasversioner som stöds.

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

  • Ange följande parametrar för att aktivera logisk replikering i postgreSQL postgresql.conf-källfilen :

    • wal_level: Ange som logisk.
    • max_replication_slots: Ange minst det maximala antalet databaser för migrering. Om du vill migrera fyra databaser anger du värdet till minst fyra.
    • max_wal_senders: Ange antalet databaser som körs samtidigt. Rekommenderat värde är 10.
  • Lägg till DMS-agentens IP-adress i källan PostgreSQL pg_hba.conf.

    1. Notera DMS IP-adressen när du har etablerat en instans av Azure Database Migration Service.

    2. Lägg till IP-adressen i filen pg_hba.conf :

          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. Skärmbild av D M S-skärmen som visar alternativet att välja tabeller.

I bakgrunden finns det ett pg_dump kommando som används för att dumpa 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 tabellnamn som inte har valts av användaren

Det finns en maxgräns på 7 500 tecken som kan inkluderas som en del av kommandot pg_dump enligt alternativet -t eller -T . Kommandot pg_dump använder antalet tecken för valda eller omarkerade tabeller , beroende på vilket som är lägre. Om antalet tecken för tabellerna som valts och inte valts överskrider 7 500 misslyckas pg_dump-kommandot med ett fel.

I föregående exempel skulle kommandot pg_dump 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)

Datatypsbegränsningar

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 blir resultatet av poståtgärderna DELETE och UPDATE oförutsägbart.
  • 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.