In vier tutorials onderzoeken we het migreren van een MySQL-database naar een PostgreSQL-database met behulp van de AWS Database Migration Service (DMS). We zijn begonnen met het maken van een IAM-gebruiker voor DMS in de eerste zelfstudie, "MySQL migreren naar PostgreSQL op AWS RDS, deel 1." Vervolgens bespraken we het maken van instanties van MySQL en PostgreSQL op AWS Relational Database Service (RDS) in de tweede zelfstudie, "MySQL migreren naar PostgreSQL op AWS RDS, deel 2." In de derde tutorial, "MySQL migreren naar PostgreSQL op AWS RDS, deel 3", hebben we een DMS-migratie gemaakt. In deze laatste zelfstudie bespreken we het uitvoeren van de DMS-migratie om de migratie uit te voeren.
Deze tutorial heeft de volgende secties:
- De DMS-migratietaak uitvoeren
- De gemigreerde database verkennen
- CloudWatch-logboeken verkennen
- Beperkingen in MySQL naar PostgreSQL-migratie met DMS
- Conclusie
De DMS-migratietaak uitvoeren
Nadat de taak is gemaakt, wordt de Status moet Klaar worden , zoals weergegeven in afbeelding 1. Klik op Start/Hervatten om de taak te starten.
Figuur 1: Start/Hervat
De status moet worden Begint , zoals weergegeven in afbeelding 2.
Figuur 2: Taak starten
Wanneer de taak verbinding heeft gemaakt met het replicatie-exemplaar en de database-eindpunten en is toegepast, worden de tabeltoewijzingen de status In werking , zoals weergegeven in afbeelding 3.
Figuur 3: Status actief
De migratie wordt uitgevoerd zoals geconfigureerd en, nadat de migratie met succes is voltooid, wordt de Status wordt Laden voltooid , zoals weergegeven in Afbeelding 4. De Tabellen geladen kolom geeft het aantal geladen tabellen aan.
Figuur 4: Status Laden voltooid
Klik voor de tabellen die zijn gemigreerd op de Tabelstatistieken tabblad, zoals weergegeven in afbeelding 5. Tabelstatistieken, inclusief het schema, de tabel, de status, het aantal invoegingen, verwijderingen, updates, DDL's, rijen met volledige belasting en totaal worden weergegeven.
Figuur 5: Tabelstatistieken
Als de brondatabasetabel geen tabellen bevat, worden de Volledige rijen is 0. Als een brontabel rijen heeft, geeft de Full Load Rows het # rijen aan zoals weergegeven voor enkele van de rijen in Afbeelding 6.
Figuur 6: Volledig geladen rijen voor sommige tabellen is 0, terwijl voor andere tabellen het aantal geladen rijen
De gemigreerde database verkennen
Nadat u MySQL-databaseschema's en tabellen naar PostgreSQL hebt gemigreerd, vermeldt u de schema's in PostgreSQL CLI met de dn opdracht. De gemigreerde schema's worden weergegeven, zoals weergegeven in Afbeelding 7. De public schema bestond al vóór de migratie.
Figuur 7: Schema's gemigreerd van MySQL naar PostgreSQL-database
De DMS-migratie converteert de tabelkolomtypen automatisch. Er wordt een secundaire index toegevoegd voor een primaire sleutel, automatisch gemaakt in de tabeltoewijzing.
Tabelgegevens worden ook gemigreerd, zoals getoond voor de mysql.user tabel in Afbeelding 8.
Figuur 8: Tabelgegevens worden ook gemigreerd
Bij het migreren van het ene databasetype naar het andere (heterogene migratie), worden de gegevenstypetoewijzingen automatisch door DMS gemaakt. Tijdens een migratie wordt een tussenliggend DMS-gegevenstype gebruikt. Bij het migreren van MySQL-database naar PostgreSQL, worden eerst de MySQL-gegevenstypen gemigreerd naar het DMS-gegevenstype met behulp van de ingebouwde toewijzingen voor de MySQL-database als brondatabase. Vervolgens wordt het DMS-gegevenstype toegewezen aan PostgreSQL-gegevenstypes, opnieuw met behulp van ingebouwde toewijzingen voor PostgreSQL als de doeldatabase. RDS-gerelateerde tabellen in de MySQL-database op RDS worden ook gemigreerd naar de PostgreSQL-database, zoals de tabel "mysql"."rds_replication_status" weergegeven in Afbeelding 9.
Figuur 9: Gemigreerde gegevens voor een RDS-informatietabel
CloudWatch-logboeken verkennen
Als logboekregistratie is geconfigureerd, zoals wij deden, kunnen de logboeken worden gecontroleerd vanuit de Logboeken tabblad, zoals weergegeven in Afbeelding 10. Klik op de taakkoppeling om de CloudWatch-logboeken weer te geven.
Figuur 10: Logboeken
De CloudWatch-logboeken worden weergegeven (zie afbeelding 11).
Figuur 11: CloudWatch-logboeken
Zoals een CloudWatch-logbericht in Afbeelding 12 aangeeft:"Alle tabellen zijn geladen. De taak met alleen volledig laden is gestopt”.
Figuur 12: Alle tafels zijn geladen
Het aantal overgedragen records wordt ook vermeld, zoals voor de sys.sys_config tabel in Afbeelding 13.
Figuur 13: Logboekinvoer voor een databasetabel bevat # overgedragen records
CloudWatch-logboeken kunnen worden gebruikt om fouten op te sporen bij het uitvoeren van een migratietaak. De foutmeldingen worden vermeld voor de tabellen die niet succesvol zijn gemigreerd in de CloudWatch-logboeken.
Beperkingen in MySQL naar PostgreSQL-migratie met DMS
Migreren van MySQL-database naar PostgreSQL-database met DMS is niet zonder beperkingen. De DMS-service zelf heeft limieten per AWS-gebruikersaccount. Andere DMS-beperkingen kunnen specifiek zijn voor een database. DMS-brongegevenstypen voor MySQL bevatten niet de UTF-8 4-byte-tekenset (utf8mb4). De tekenset die door DMS wordt ondersteund, is Code Page 1252 Windows Latin 1 (ANSI) en tekens die niet in de tekenset voorkomen, kunnen tijdens een migratie een fout veroorzaken. Er zijn enkele beperkingen voor MySQL-database als DMS-bron. De enige beperking voor het gebruik van PostgreSQL als een DMS-doeldatabase is dat het JSON-gegevenstype wordt geconverteerd naar het Native CLOB-gegevenstype.
Conclusie
In vier zelfstudies hebben we het migreren van een MySQL-database-instantie op RDS naar een Postgres-database-instantie op RDS besproken.