Google CloudSQL er en administreret tjeneste til databaser med understøttelse af MySQL og PostgreSQL. CloudSQL kan integreres med nogle af de andre Google Cloud Platform-tjenester, inklusive datareplikering på tværs af flere zoner med automatisk failover. I denne artikel skal vi diskutere migrering af en MySQL-databaseinstans fra Google CloudSQL til AWS RDS ved hjælp af Database Migration Service (DMS). Denne artikel har følgende sektioner:
- Indstilling af miljøet
- Oprettelse af en MySQL RDS DB-instans
- Opretter forbindelse til MySQL-database på RDS
- Oprettelse af et Google Cloud Platform-projekt
- Oprettelse af en CloudSQL-instans
- Tilføjelse af en rute til CloudSQL DB-instansens IP-adresse til VPC-rutetabellen
- Oprettelse af en DMS-replikeringsinstans
- Tilføjelse af et netværk til replikeringsinstansforbindelse til CloudSQL DB-instans
- Oprettelse af databasereplikeringsslutpunkter
- Oprettelse af en replikeringsopgave
- Kørsel af replikeringsopgaven
- Udforskning af de migrerede tabeller
- Udforskning af CloudWatch-logfilerne
- Sletning af en migrering
- Sletning af DB-forekomster
- Konklusion
Indstilling af miljøet
En Google Cloud Platform-faktureringskonto er påkrævet. Google Cloud Platform Free Tier-konto giver en gratis prøveperiode det første år. En AWS-konto er også påkrævet; dette kan oprettes på https://aws.amazon.com/resources/create-account/.
Oprettelse af en MySQL RDS DB-instans
Fordi vi skal migrere en MySQL-database fra CloudSQL til AWS RDS, skal vi oprette en MySQL-databaseinstans på RDS. Naviger til RDS på https://aws.amazon.com/rds, og vælg motor som MySQL i RDS-guiden, som vist i figur 1.
Figur 1: Valg af MySQL Database Engine
I Produktion? , vælg Dev/Test , som vist i figur 2.
Figur 2: Valg af udvikling og test
I Angiv DB-detaljer , marker afkrydsningsfeltet Vis kun muligheder, der er kvalificerede til RDS Free Tier , som vist i figur 3. Vælg Licensmodel som generel-offentlig-licens. Vælg DB Engine Version som MySQL 5.6.35. MySQL version 5.5, 5.6 og 5.7 understøttes for DMS-mål. Vælg DB Instance Class som db.t2.micro, som har en kapacitet på 1 vCPU og 1 GB RAM. Vælg Multi-AZ Deployment som nr. Vælg Storage Type as General Purpose (SSD), og allokeret lagerplads som 5 GB.
Figur 3: Angiv DB-detaljer
Angiv en DB-instans-id i databaseindstillinger (mysqldb), hovedbrugernavn og hovedadgangskode, som vist i figur 4. Klik på Næste trin.
Figur 4: Angivelse af databaseindstillinger
I Konfigurer avancerede indstillinger skal du vælge en VPC, som vist i figur 5. DMS-migreringen skal oprettes i samme VPC som RDS DB-instansen. Indstil tilgængelighedszone som us-east-1b. Vælg muligheden for at oprette ny sikkerhedsgruppe. Angiv et databasenavn (mysqldb) i Databaseindstillinger. Angiv en databaseport (3306), og vælg en DB-parametergruppe.
Figur 5: Konfiguration af avancerede indstillinger
De fleste eller alle andre indstillinger – inklusive Option Group, Aktiver IAM DB-godkendelse, Aktiver kryptering, sikkerhedskopiering og overvågning – kan bevares som standard (se figur 6). Automatiske sikkerhedskopier er påkrævet for at være aktiveret for MySQL på RDS som DMS-kilde. Klik på Start DB-instans .
Figur 6: Start DB Instance
En ny DB-instans begynder at blive oprettet, som vist i meddelelsen i figur 7. Klik på Vis dine DB-instanser for at se DB-instanserne.
Figur 7: Din DB-instans er ved at blive oprettet
En ny MySQL DB-instans på RDS starter, som vist i figur 8.
Figur 8: MySQL DB-instans på RDS
Klik på linket Sikkerhedsgruppe, som vist i figur 9, for at ændre reglerne for indgående/udgående for at tillade trafik fra/til alle IP-adresser.
Figur 9: Sikkerhedsgruppelink
Vælg fanen Indgående, og klik på knappen Rediger for at ændre de indgående regler, som vist i figur 10.
Figur 10: Ændring af indgående regler
I Rediger indgående regler skal du indstille Type til Al trafik, Protokol til Alle, Portområde til 0-65535, Kilde til Anywhere, og klikke på Gem (se figur 11).
Figur 11: Rediger indgående regler
De ændrede indgående regler er vist i figur 12.
Figur 12: Indgående regler
De udgående regler skal ikke ændres, fordi de allerede er indstillet til at tillade trafik til alle destinations-IP'er, som vist i figur 13.
Figur 13: Udgående regler
Opretter forbindelse til MySQL-database på RDS
Hent RDS DB-instansværten fra slutpunktet; værtsadressen er slutpunktet med portsuffikset :3306 fjernet. Opret forbindelse til MySQL-databaseinstansen på RDS ved hjælp af værtsadressen og porten med følgende mysql-kommando for at starte en MySQL-kommandolinjegrænseflade.
mysql --host=mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com --port=3306 --user=dvohra --password=mysql5db
Værten, brugeren og adgangskoden ville være forskellig for forskellige brugere. Giv MySQL-kontoadgang til DMS-brugeren med følgende kommandoer, hvor DMS-brugeren ville være forskellig for forskellige brugere.
GIV ÆNDRING, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON mysqldb.* TO 'dvohra'@'%';GID ALLE PRIVILEGIER PÅ awsdms_control.* TO 'dvohra'@'%';Oprettelse af et Google Cloud Platform-projekt
Du skal oprette et Google Cloud Platform-projekt for at bruge CloudSQL. For at oprette et projekt skal du klikke på Opret et tomt projekt linket på siden Kom godt i gang, som vist i figur 14.
Figur 14: Opret et tomt projektI Nyt projekt guiden, skal du angive et projektnavn (MySQLDB), og klik på Opret , som vist i figur 15.
Figur 15: Nyt projektEt nyt projekt bliver oprettet, som vist i dashboardet i figur 16.
Figur 16: Nyt Google Cloud Platform-projektOprettelse af en CloudSQL-instans
I dette afsnit skal vi oprette en CloudSQL-instans. Naviger til CloudSQL URL https://cloud.google.com/sql/ i en browser, som vist i figur 17. Klik på View Console.
Figur 17: Se konsolVælg MySQLDB projekt og klik på Opret forekomst , som vist i figur 18.
Figur 18: Opret forekomstI Opret en forekomst guiden, vælg MySQL og klik på Næste , som vist i figur 19.
Figur 19: Valg af motor som MySQLI Vælg en MySQL-instanstype , klik på Vælg anden generation for at vælge MySQL Second Generation instanstype, som vist i figur 20. Nogle af fordelene ved Second Generation instanstypen er også angivet.
Figur 20: Valg af en anden generation af MySQL-instansI Opret en MySQL Second Generation-instans (se figur 21), angiv et instans-id og en Root-adgangskode , og vælg en Region og Zone. Klik på Opret .
Figur 21: Opret en MySQL Second Generation-instansEn MySQL-instans begynder at blive oprettet, som vist i tabellen Instances i figur 22.
Figur 22: CloudSQL MySQL-instansTilføjelse af en rute til CloudSQL DB-instansens IP-adresse til VPC-rutetabellen
Vi er nødt til at ændre rutetabellen for VPC'en, hvori RDS DB-instansen og DMS-migreringen er oprettet, for at tillade adgang til IP-adressen for CloudSQL-instansen. Først skal du hente IP-adressen på CloudSQL-instansen fra CloudSQL-konsollen, som vist i figur 23.
Figur 23: IP-adresse for CloudSQL DB-instansenKlik på Rutetabellen link, som vist i figur 24, for den VPC, hvori RDS DB-instansen oprettes, og DMS skal efterfølgende oprettes.
Figur 24: Link til rutetabelVælg ruten på listen, og klik på Rediger, som vist i figur 25.
Figur 25: Rute>RedigerKlik på Tilføj en anden rute (se figur 26).
Figur 26: Tilføj en anden ruteAngiv IP-adressen for CloudSQL-instansen i Destination, som vist i figur 27.
Figur 27: Angivelse af destination som IP-adressen for CloudSQL-instansenVælg målet som internetgateway, der er knyttet til VPC'en, som vist i figur 28. En internetgateway tillader kommunikation mellem forekomsterne i en VPC og internettet.
Figur 28: Valg af mål som internetgatewayKlik på Gem for at gemme ruten. En rute tilføjes, som vist i figur 29.
Figur 29: Rute for CloudSQL-instansOprettelse af en DMS-replikeringsinstans
I dette afsnit skal vi oprette en replikeringsinstans til migrering af en CloudSQL-instans til RDS. Klik på Opret migration på startsiden for Database Migration Service, som vist i figur 30.
Figur 30: Opret migreringPå velkomstsiden skal du klikke på Næste (se figur 31).
Figur 31: Velkomstside>NæsteI Opret replikeringsinstans side, angiv et navn og en beskrivelse, som vist i figur 32. Vælg en instansklasse som dms.t2.medium. Vælg Replikeringsmotorversion som 2.2.1. Vælg den samme VPC, som RDS DB-instansen blev oprettet i. Vælg Multi-AZ A No. Marker afkrydsningsfeltet Offentligt tilgængeligt.
Figur 32: Konfiguration af en replikeringsinstansI Avanceret skal du angive Allokeret lagerplads (50 GB), vælge en replikeringsundernetgruppe og vælge Tilgængelighedszone som den samme som for RDS DB-instans, us-east-1b, som vist i figur 33. Vælg standard-VPC-sikkerhedsgruppen. Vælg den KMS-hovednøgle, der er oprettet til DMS.
Figur 33: Konfiguration af avancerede indstillingerVælg standardvedligeholdelsesindstillingerne, og klik på Næste, som vist i figur 34.
Figur 34: Replikeringsinstans>NæsteMeddelelsen "Din replikeringsforekomst bliver oprettet" vises som vist i figur 35. Kilde- og måldatabasens slutpunkter kan kun konfigureres, efter replikeringsforekomsten er blevet oprettet.
Figur 35: Din replikeringsinstans er ved at blive oprettetNår replikeringsforekomsten er blevet oprettet, vises meddelelsen "Replikeringsforekomst oprettet vellykket" (se figur 36).
Figur 36: Replikeringsforekomsten blev oprettetReplikeringsforekomsterne viser den nye replikeringsforekomst, der er oprettet, som vist i figur 37.
Figur 37: ReplikeringsforekomsterTilføjelse af et netværk til replikeringsinstansforbindelse til CloudSQL DB-instans
Først skal du bestemme den IP-adresse, som replikeringsinstansen kører på. IP-adressen kan fås fra replikeringsinstanskonsollen, som vist i figur 38.
Figur 38: IP-adresse til replikeringsinstansEfter at have fået IP-adressen, tilføjer vi derefter et netværk bestående af IP-adressen til MySQL-instansen på CloudSQL. Klik på CloudSQL MySQL-forekomstlinket, som vist i figur 39.
Figur 39: CloudSQL MySQL DB-instansKlik på Authorization MySQL Database Instance detaljeside, som vist i figur 40.
Figur 40: AutorisationKlik på Tilføj netværk (se figur 41).
Figur 41: Tilføj netværkI Nyt netværk , angiv et netværksnavn og netværks-IP-adresse som IP-adressen for replikeringsforekomsten, som vist i figur 42, og klik på Udført.
Figur 42: Tilføjelse af nyt netværk til CloudSQLEt nyt netværk tilføjes, som vist i figur 43. Klik på Gem for at gemme netværket.
Figur 43: Gemmer nyt netværkEn "Forekomst bliver opdateret"-meddelelse vises, som vist i figur 44.
Figur 44: Forekomsten opdateresNår instansen er blevet opdateret, angiver instansikonet det samme, som vist i figur 45.
Figur 45: Forekomst opdateretKlik på Oversigt (se figur 46) for at få vist instansoversigten.
Figur 46: OversigtDet nye netværk bliver opført i Autoriserede netværk på Forekomstdetaljer side, som vist i figur 47.
Figur 47: Autoriserede netværkOprettelse af databasereplikeringsslutpunkter
Dernæst skal vi oprette kilde- og måldatabasens slutpunkter. Angiv slutpunkt-id'er for kilde- og måldatabaser. For Kildemotor skal du vælge mysql , som vist i figur 48.
Figur 48: Valg af kildemaskine som mysqlVælg Target engine som mysql også, som vist i figur 49.
Figur 49: Valg af Target Engine som mysqlFor kildeservernavnet skal du kopiere IPv4-adressen for CloudSQL-instansen, som vist i figur 50.
Figur 50: IPv4-adresse for CloudSQL-instansenFor måldatabasen skal du angive servernavnet som Endpoint minus portsuffikset ":3306" for RDS DB-instansen til MySQL-databasen (se figur 51). Angiv Port for kilde- og måldatabaser som 3306. Vælg SSL-tilstand som ingen for både kilde- og målforbindelser. Angiv brugernavn for kildedatabasen som root og adgangskoden som angivet ved oprettelse af CloudSQL-forekomsten. På samme måde skal du indstille brugernavnet og adgangskoden til måldatabasen på RDS.
Figur 51: Konfiguration af kilde- og måldatabaseforbindelsesdetaljerFor sektionen Avanceret i både kilde- og måldatabaserne skal du vælge KMS-hovednøgle dms, som blev oprettet til DMS. Klik på Kør test , som vist i figur 52, for kildeforbindelsen. På samme måde skal du klikke på Kør test for målforbindelsen.
Figur 52: Kør testHvis resultatet af testen er "Forbindelse testet med succes" for både kilde- og måldatabaseforbindelserne, skal du klikke på Næste, som vist i figur 53.
Figur 53: Test af forbindelserOprettelse af en replikeringsopgave
I Opret opgave skal du angive et opgavenavn og opgavebeskrivelse som vist i figur 54. Kildeslutpunktet, målslutpunktet og replikeringsforekomsten er hårdkodet. Vælg Overførselstype som Overfør eksisterende data. Marker afkrydsningsfeltet Start opgave ved oprettelse.
Figur 54: Opret opgaveI Opgaveindstillinger skal du vælge/indstille Tilberedningstilstand for målbord som Gør ingenting , Inkluder LOB-kolonner i replikering som Begrænset LOB-tilstand , og Max LOB-størrelse som 32 kb, som vist i figur 55. Vælg Aktiver logning mulighed.
Figur 55: OpgaveindstillingerI Tabelkortlægninger , vist i figur 56, skal der tilføjes mindst én udvælgelsesregel.
Figur 56: TabelkortlægningerVælg Indtast et skema mulighed i Skemanavnet er Mark. Angiv Skemanavnet er som mysql , som vist i figur 57. Angiv Tabelnavnet er som innodb_index_stats. Vælg Handling som Medtag . Klik på Tilføj valgregel .
Figur 57: Tilføjelse af en udvælgelsesregelFor at tilføje en anden valgregel skal du klikke på tilføj valgregel link, som vist i figur 58.
Figur 58: Tilføj valgregelTilføj en udvælgelsesregel for at inkludere tabellen mysql.innodb_table_stats , som vist i figur 59.
Figur 59: Tilføjelse af en udvælgelsesregel for mysql.innodb_table_statsUdvælgelsesregler kan tilføjes, én for hver tabel, eller ved at bruge et regulært jokertegn. Dernæst skal vi bruge en % til at tilføje en udvælgelsesregel. Klik på tilføj valgregel , som vist i figur 60.
Figur 60: Tilføj valgregellinkAngiv Skema som mysql og angiv Tabelnavn som tidszone% , som repræsenterer alle tabeller, der starter med "tidszone" (se figur 61).
Figur 61: Tilføjelse af en udvælgelsesregel for at inkludere alle tabeller i mysql-skemaet startende med time_zoneKlik på Opret opgave for at oprette en opgave, som vist i figur 62.
Figur 62: Opret opgaveEn ny opgave tilføjes med status som Opretter i første omgang, som vist i figur 63. Klik på Opdater data fra server med jævne mellemrum for at opdatere opgavestatus.
Figur 63: Opgave tilføjet med status OpretterNår opgaven er oprettet og klar til at køre, bliver status klar, som vist i figur 64.
Figur 64: Opgavestatus klarKørsel af replikeringsopgaven
For at starte replikeringsforekomsten skal du klikke på knappen Start/Genoptag, som vist i figur 65.
Figur 65: Start/GenoptagOpgavestatus bliver Starter (se figur 66). Klik med jævne mellemrum på Opdater data fra server knappen for at opdatere status som vist i figur 66.
Figur 66: Opgavestatus starterOpgavestatus bliver Kører når opgaven begynder at køre. Når den fulde belastning er fuldført, bliver status Indlæsning fuldført , som vist i figur 67.
Figur 67: Indlæsning fuldførtUdforsker de migrerede tabeller
Tablerne er indlæst kolonne har en værdi på 7 for de syv migrerede tabeller, som vist i figur 68.
Figur 68: Syv tabeller er migreretFor at finde detaljer om de migrerede tabeller skal du vælge Tabelstatistik fanen, som vist i figur 69.
Figur 69: Tabel statistikAlle de tabeller, der er blevet migreret, vises på listen, som vist i figur 70.
Figur 70: Tabeller migreretUdforskning af CloudWatch-loggene
For at udforske CloudWatch-logfilerne skal du klikke på linket i logfilerne fanen (se figur 71).
Figur 71: Logs linkCloudWatch-logfiler viser en logpost for hver migreret tabel, som vist i figur 72. Når alle tabeller, der blev konfigureret ved hjælp af valg- og transformationsreglerne, er blevet migreret, tilføjes logposten "Alle tabeller er indlæst".
Figur 72: CloudWatch-logfilerNår alle tabeller er blevet indlæst, afsluttes en logpost Opgavestyring bliver tilføjet, som vist i figur 73.
Figur 73: Opgavestyring afsluttetSletning af en migrering
For at slette en migrering er rækkefølgen omvendt af at oprette en migrering.
- Slet migreringsopgaverne.
- Slet databaseslutpunkterne.
- Slet replikeringsforekomsten.
For at slette opgaven skal du vælge opgaven og klikke på Slet, som vist i figur 74.
Figur 74: Opgave>SletKlik på Slet i dialogboksen Slet opgave, som vist i figur 75.
Figur 75: Dialogboksen Slet opgavebekræftelseOpgavestatus bliver Sletter (se figur 76).
Figur 76: OpgavesletningFor at slette endepunkterne skal du vælge endepunkterne og klikke på Slet som vist i figur 77.
Figur 77: Endpoints>SletI Slet slutpunkt bekræftelsesdialogboks, klik på Slet, som vist i figur 78.
Figur 78: Dialogboks til bekræftelse af slutpunktStatus for slutpunkterne bliver Deleting, som vist i figur 79.
Figur 79: Sletning af slutpunkterFor at slette en replikeringsforekomst skal du vælge replikeringsforekomsten og klikke på Slet, som vist i figur 80.
Figur 80: Replikeringsforekomster>SletI Slet replikeringsforekomst bekræftelsesdialogboks, klik på Slet (se figur 81).
Figur 81: Bekræftelsesdialogboks Slet replikeringsforekomstStatus for replikeringsforekomsten bliver Deleting, som vist i figur 82.
Figur 82: Sletter replikeringsinstansSletning af DB-forekomster
Slet derefter kilde- og måldatabaserne. For at slette måldatabasen, som er en MySQL-database på RDS, skal du vælge databaseforekomsten i tabellen Alle forekomster og klikke på Forekomsthandlinger>Slet, som vist i figur 83.
Figur 83: Instance Actions>SletI Slet DB-forekomst skal du vælge muligheden for ikke at oprette et endeligt snapshot og markere afkrydsningsfeltet for bekræftelse og klikke på Slet, som vist i figur 84.
Figur 84: Slet DB Instance DialogRDS DB-forekomsten begynder at blive slettet, som angivet af Sletningsstatus i figur 85.
Figur 85: Sletning af RDS DB-instansFor at slette CloudSQL DB-instansen skal du højreklikke på mysql DB-instansstyringsikon og vælg Slet (se figur 86).
Figur 86: CloudSQL mysql>SletI Slet forekomst? bekræftelsesdialogboks, angiv instansnavnet i det angivne felt for at bekræfte, at instansen skal slettes, og klik på Slet som vist i figur 87.
Figur 87: Dialogboksen til bekræftelse af Slet forekomstKonklusion
I denne artikel diskuterede vi migrering af MySQL på CloudSQL til AWS RDS ved hjælp af AWS Database Migration Service.