sql >> Databáze >  >> RDS >> PostgreSQL

Sekvence primárního klíče PostgreSQL ztracena po migraci pomocí AWS DMS

Poté, co mě @a_horse_with_no_name ukázal správným směrem a chatoval s AWS, jsem schopen odpovědět na svou vlastní otázku, alespoň pokud používáte AWS Database Migration Service (DMS).

Problém je v tom, že DMS se zaměřuje pouze na samotná data a ne ve skutečnosti na schéma (což mi připadá jako zásadní přehlédnutí, zvláště pokud používáte stejnou databázovou technologii, ale to je další problém). Takže samotné schéma není migrováno. Dokumentace to opravdu nevysvětluje.

Řešení tohoto problému:

  1. Zastavte (pokud stále existuje) stávající migraci AWS DMS
  2. Zrušte stávající migrovanou databázi a vytvořte nové prázdné schéma k použití
  3. Postupujte podle kroků zde https://docs.aws. amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html k instalaci a nastavení nástroje Amazon Schema Conversation Tool (SCT)
  4. Jakmile se připojíte k oběma databázím, postupujte podle kroků zde https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Converting.html "převést" vaše schéma (pro tuto databázi jsem udělal celé "veřejné" schéma, abych zajistil, že je vše pokryto
  5. Vytvořte nebo upravte migraci AWS DMS, zajistěte režim přípravy cílové tabulky ="ZKRÁTIT" a deaktivujte cizí klíče v cílové databázi. Pokud provádíte úpravy, ujistěte se, že po výzvě „RESTART“ nepokračujete

Co jsem ještě nevyzkoušel, je, jak zvládnout fakt, že migruji živou databázi. Po dokončení migrace tedy mohou být sekvence v cílové databázi zastaralé. Věřím, že mohu později přejít do SCT a migrovat pouze sekvence, ale ještě jsem to netestoval.



  1. sudo yum install php55w-mysqlnd konflikt

  2. Chyba doby běhu:-2147217887(80040e21) Systém nemůže najít text zprávy pro číslo zprávy 0x80040e21 v souboru zpráv pro OraOLEDB

  3. Seskupení podle klauzule v mySQL a postgreSQL, proč chyba v postgreSQL?

  4. Vytvořte instanci java.sql.blob v uložené proceduře java