sql >> Database >  >> RDS >> PostgreSQL

Primaire sleutelreeks van PostgreSQL verloren na migratie met AWS DMS

Nadat @a_horse_with_no_name me in de goede richting had gewezen en met AWS had gechat, kan ik mijn eigen vraag beantwoorden, tenminste als je AWS Database Migration Service (DMS) gebruikt.

Het probleem is dat DMS zich alleen richt op de gegevens zelf en niet echt op het schema (wat mij een groot onoplettendheid lijkt, vooral als je dezelfde databasetechnologie gebruikt, maar dat is een ander probleem). Het schema zelf wordt dus niet gemigreerd. De documentatie maakt dit niet echt duidelijk.

Om dit probleem op te lossen:

  1. Stop (als deze nog bestaat) de bestaande AWS DMS-migratie
  2. Verwijder de bestaande gemigreerde database en maak een nieuw leeg schema om te gebruiken
  3. Volg de stappen hier https://docs.aws. amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html om de Amazon Schema Conversation Tool (SCT) te installeren en in te stellen
  4. Zodra u met beide databases bent verbonden, volgt u de stappen hier https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html om je schema te "converteren" (ik heb het hele "openbare" schema voor deze database gedaan om ervoor te zorgen dat alles gedekt is
  5. Maak of wijzig uw AWS DMS-migratie, zorg ervoor dat Target Table Preparation Mode ="TRUNCATE" en schakel externe sleutels in de doeldatabase uit. Als u wijzigingen aanbrengt, zorg er dan voor dat u niet doorgaat met "HERSTARTEN"

Wat ik nog niet heb getest, is hoe ik moet omgaan met het feit dat ik een live database migreer. De sequenties kunnen dus verouderd zijn in de doeldatabase wanneer de migratie is voltooid. Ik geloof dat ik pas later in SCT kan gaan en alleen de sequenties kan migreren, maar ik heb dit nog niet getest.



  1. asp.net-toepassing maakt geen verbinding met oracle 11g, zelfs niet na installatie van oracle instant-client voor 11g

  2. Eenvoudige recursieve boom in PHP / MySQL

  3. wat is oradiag_<gebruiker> map?

  4. Hoe verander je een datatype CLOB NAAR VARCHAR2(sql)