sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL primärnyckelsekvens förlorad efter migrering med AWS DMS

Efter att @a_horse_with_no_name pekade mig i rätt riktning och chattade med AWS kan jag svara på min egen fråga, åtminstone om du använder AWS Database Migration Service (DMS).

Problemet är att DMS bara fokuserar på själva data och egentligen inte schemat (vilket för mig verkar vara en stor förbiseende, speciellt om du använder samma databasteknik men det är en annan fråga). Så själva schemat migreras inte. Dokumentationen klargör inte riktigt detta.

Så här åtgärdar du det här problemet:

  1. Stoppa (om den fortfarande finns) den befintliga AWS DMS-migreringen
  2. Släpp den befintliga migrerade databasen och skapa ett nytt tomt schema att använda
  3. Följ stegen här https://docs.aws. amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html för att installera och ställa in Amazon Schema Conversation Tool (SCT)
  4. När du är ansluten till båda databaserna följer du stegen här https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html för att "konvertera" ditt schema (jag gjorde hela det "offentliga" schemat för den här databasen för att säkerställa att allt täcks
  5. Skapa eller ändra din AWS DMS-migrering, se till att Target Table Preparation Mode ="TRUNCATE" och inaktivera främmande nycklar på måldatabasen. Om du ändrar, se till att när du tillfrågas om du "STARTA OM" inte återupptar

Det jag ännu inte har testat är hur jag ska hantera det faktum att jag migrerar en livedatabas. Så sekvenserna kan vara inaktuella i måldatabasen när migreringen är klar. Jag tror att jag bara senare kan gå in i SCT och bara migrera sekvenserna men jag har inte testat detta än.



  1. Förhindra flera inloggningar av samma användare på ett skrivbordsprogram

  2. Skillnaden mellan sys.views, sys.system_views och sys.all_views i SQL Server

  3. Anslut till serverdatabas från localhost

  4. SQL får max-id-fält på en LEFT JOIN