PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Die PostgreSQL-Primärschlüsselsequenz ist nach der Migration mit AWS DMS verloren gegangen

Nachdem mich @a_horse_with_no_name in die richtige Richtung geführt und mit AWS gechattet hat, kann ich meine eigene Frage beantworten, zumindest wenn Sie AWS Database Migration Service (DMS) verwenden.

Das Problem ist, dass sich DMS nur auf die Daten selbst und nicht wirklich auf das Schema konzentriert (was mir wie ein großes Versehen erscheint, insbesondere wenn Sie dieselbe Datenbanktechnologie verwenden, aber das ist ein anderes Problem). Das Schema selbst wird also nicht migriert. Die Dokumentation macht dies nicht wirklich deutlich.

So beheben Sie dieses Problem:

  1. Beenden Sie (falls noch vorhanden) die bestehende AWS DMS-Migration
  2. Löschen Sie die vorhandene migrierte Datenbank und erstellen Sie ein neues leeres Schema zur Verwendung
  3. Folgen Sie den Schritten hier https://docs.aws. amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html um das Amazon Schema Conversation Tool (SCT) zu installieren und einzurichten
  4. Sobald Sie mit beiden Datenbanken verbunden sind, folgen Sie den Schritten hier https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html um Ihr Schema zu "konvertieren" (ich habe das gesamte "öffentliche" Schema für diese Datenbank erstellt, um sicherzustellen, dass alles abgedeckt ist
  5. Erstellen oder ändern Sie Ihre AWS DMS-Migration, stellen Sie sicher, dass der Zieltabellenvorbereitungsmodus =„TRUNCATE“ ist, und deaktivieren Sie Fremdschlüssel in der Zieldatenbank. Wenn Sie Änderungen vornehmen, vergewissern Sie sich, dass Sie bei der Aufforderung "NEUSTARTEN" nicht fortfahren

Was ich noch nicht getestet habe, ist, wie ich damit umgehen soll, dass ich eine Live-Datenbank migriere. Daher können die Sequenzen in der Zieldatenbank veraltet sein, wenn die Migration abgeschlossen ist. Ich glaube, ich kann einfach später in SCT einsteigen und nur die Sequenzen migrieren, aber ich habe das noch nicht getestet.