sql >> Database teknologi >  >> RDS >> Mysql

Migrering af en MySQL-database fra CloudSQL til AWS RDS

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 projekt

I Nyt projekt guiden, skal du angive et projektnavn (MySQLDB), og klik på Opret , som vist i figur 15.


Figur 15: Nyt projekt

Et nyt projekt bliver oprettet, som vist i dashboardet i figur 16.


Figur 16: Nyt Google Cloud Platform-projekt

Oprettelse 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 konsol

Vælg MySQLDB projekt og klik på Opret forekomst , som vist i figur 18.


Figur 18: Opret forekomst

I Opret en forekomst guiden, vælg MySQL og klik på Næste , som vist i figur 19.


Figur 19: Valg af motor som MySQL

I 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-instans

I 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-instans

En MySQL-instans begynder at blive oprettet, som vist i tabellen Instances i figur 22.


Figur 22: CloudSQL MySQL-instans

Tilfø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-instansen

Klik 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 rutetabel

Vælg ruten på listen, og klik på Rediger, som vist i figur 25.


Figur 25: Rute>Rediger

Klik på Tilføj en anden rute (se figur 26).


Figur 26: Tilføj en anden rute

Angiv IP-adressen for CloudSQL-instansen i Destination, som vist i figur 27.


Figur 27: Angivelse af destination som IP-adressen for CloudSQL-instansen

Væ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 internetgateway

Klik på Gem for at gemme ruten. En rute tilføjes, som vist i figur 29.


Figur 29: Rute for CloudSQL-instans

Oprettelse 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 migrering

På velkomstsiden skal du klikke på Næste (se figur 31).


Figur 31: Velkomstside>Næste

I 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 replikeringsinstans

I 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 indstillinger

Vælg standardvedligeholdelsesindstillingerne, og klik på Næste, som vist i figur 34.


Figur 34: Replikeringsinstans>Næste

Meddelelsen "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 oprettet

Når replikeringsforekomsten er blevet oprettet, vises meddelelsen "Replikeringsforekomst oprettet vellykket" (se figur 36).


Figur 36: Replikeringsforekomsten blev oprettet

Replikeringsforekomsterne viser den nye replikeringsforekomst, der er oprettet, som vist i figur 37.


Figur 37: Replikeringsforekomster

Tilfø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 replikeringsinstans

Efter 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-instans

Klik på Authorization MySQL Database Instance detaljeside, som vist i figur 40.


Figur 40: Autorisation

Klik på Tilføj netværk (se figur 41).


Figur 41: Tilføj netværk

I 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 CloudSQL

Et nyt netværk tilføjes, som vist i figur 43. Klik på Gem for at gemme netværket.


Figur 43: Gemmer nyt netværk

En "Forekomst bliver opdateret"-meddelelse vises, som vist i figur 44.


Figur 44: Forekomsten opdateres

Når instansen er blevet opdateret, angiver instansikonet det samme, som vist i figur 45.


Figur 45: Forekomst opdateret

Klik på Oversigt (se figur 46) for at få vist instansoversigten.


Figur 46: Oversigt

Det nye netværk bliver opført i Autoriserede netværkForekomstdetaljer side, som vist i figur 47.


Figur 47: Autoriserede netværk

Oprettelse 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 mysql

Vælg Target engine som mysql også, som vist i figur 49.


Figur 49: Valg af Target Engine som mysql

For kildeservernavnet skal du kopiere IPv4-adressen for CloudSQL-instansen, som vist i figur 50.


Figur 50: IPv4-adresse for CloudSQL-instansen

For 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åldatabaseforbindelsesdetaljer

For 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 test

Hvis 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 forbindelser

Oprettelse 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 opgave

I 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: Opgaveindstillinger

I Tabelkortlægninger , vist i figur 56, skal der tilføjes mindst én udvælgelsesregel.


Figur 56: Tabelkortlægninger

Væ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ælgelsesregel

For at tilføje en anden valgregel skal du klikke på tilføj valgregel link, som vist i figur 58.


Figur 58: Tilføj valgregel

Tilfø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_stats

Udvæ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 valgregellink

Angiv 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_zone

Klik på Opret opgave for at oprette en opgave, som vist i figur 62.


Figur 62: Opret opgave

En 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 Opretter

Når opgaven er oprettet og klar til at køre, bliver status klar, som vist i figur 64.


Figur 64: Opgavestatus klar

Kørsel af replikeringsopgaven

For at starte replikeringsforekomsten skal du klikke på knappen Start/Genoptag, som vist i figur 65.


Figur 65: Start/Genoptag

Opgavestatus 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 starter

Opgavestatus 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ørt

Udforsker 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 migreret

For at finde detaljer om de migrerede tabeller skal du vælge Tabelstatistik fanen, som vist i figur 69.


Figur 69: Tabel statistik

Alle de tabeller, der er blevet migreret, vises på listen, som vist i figur 70.


Figur 70: Tabeller migreret

Udforskning af CloudWatch-loggene

For at udforske CloudWatch-logfilerne skal du klikke på linket i logfilerne fanen (se figur 71).


Figur 71: Logs link

CloudWatch-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-logfiler

Når alle tabeller er blevet indlæst, afsluttes en logpost Opgavestyring bliver tilføjet, som vist i figur 73.


Figur 73: Opgavestyring afsluttet

Sletning af en migrering

For at slette en migrering er rækkefølgen omvendt af at oprette en migrering.

  1. Slet migreringsopgaverne.
  2. Slet databaseslutpunkterne.
  3. Slet replikeringsforekomsten.

For at slette opgaven skal du vælge opgaven og klikke på Slet, som vist i figur 74.


Figur 74: Opgave>Slet

Klik på Slet i dialogboksen Slet opgave, som vist i figur 75.


Figur 75: Dialogboksen Slet opgavebekræftelse

Opgavestatus bliver Sletter (se figur 76).


Figur 76: Opgavesletning

For at slette endepunkterne skal du vælge endepunkterne og klikke på Slet som vist i figur 77.


Figur 77: Endpoints>Slet

I Slet slutpunkt bekræftelsesdialogboks, klik på Slet, som vist i figur 78.


Figur 78: Dialogboks til bekræftelse af slutpunkt

Status for slutpunkterne bliver Deleting, som vist i figur 79.


Figur 79: Sletning af slutpunkter

For at slette en replikeringsforekomst skal du vælge replikeringsforekomsten og klikke på Slet, som vist i figur 80.


Figur 80: Replikeringsforekomster>Slet

I Slet replikeringsforekomst bekræftelsesdialogboks, klik på Slet (se figur 81).


Figur 81: Bekræftelsesdialogboks Slet replikeringsforekomst

Status for replikeringsforekomsten bliver Deleting, som vist i figur 82.


Figur 82: Sletter replikeringsinstans

Sletning 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>Slet

I 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 Dialog

RDS DB-forekomsten begynder at blive slettet, som angivet af Sletningsstatus i figur 85.


Figur 85: Sletning af RDS DB-instans

For at slette CloudSQL DB-instansen skal du højreklikke på mysql DB-instansstyringsikon og vælg Slet (se figur 86).


Figur 86: CloudSQL mysql>Slet

I 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 forekomst

Konklusion

I denne artikel diskuterede vi migrering af MySQL på CloudSQL til AWS RDS ved hjælp af AWS Database Migration Service.


  1. Generer en tilfældig dato i Oracle med DBMS_RANDOM

  2. Hvilken SQL-forespørgsel er hurtigere? Filtrer på Tilmeldingskriterier eller Hvor-klausul?

  3. Ruby on Rails 3 Kan ikke oprette forbindelse til lokal MySQL-server gennem socket '/tmp/mysql.sock' på OSX

  4. Find poster, hvor join ikke findes