sql >> Databasteknik >  >> RDS >> Mysql

Migrera en MySQL-databas från CloudSQL till AWS RDS

Google CloudSQL är en hanterad tjänst för databaser med stöd för MySQL och PostgreSQL. CloudSQL kan integreras med några av de andra Google Cloud Platform-tjänsterna, inklusive datareplikering över flera zoner med automatisk failover. I den här artikeln ska vi diskutera migrering av en MySQL-databasinstans från Google CloudSQL till AWS RDS med hjälp av Database Migration Service (DMS). Den här artikeln har följande avsnitt:

  • Ställa in miljön
  • Skapa en MySQL RDS DB-instans
  • Ansluter till MySQL-databasen på RDS
  • Skapa ett Google Cloud Platform-projekt
  • Skapa en CloudSQL-instans
  • Lägga till en rutt för CloudSQL DB-instansens IP-adress till VPC-rutttabellen
  • Skapa en DMS-replikeringsinstans
  • Lägga till ett nätverk för replikeringsinstansanslutning till CloudSQL DB-instans
  • Skapa slutpunkter för databasreplikering
  • Skapa en replikeringsuppgift
  • Köra replikeringsuppgiften
  • Utforska de migrerade tabellerna
  • Utforska CloudWatch-loggarna
  • Ta bort en migrering
  • Ta bort DB-instanser
  • Slutsats

Ställa in miljön

Ett Google Cloud Platform-faktureringskonto krävs. Google Cloud Platform Free Tier-konto ger en kostnadsfri provperiod det första året. Ett AWS-konto krävs också; detta kan skapas på https://aws.amazon.com/resources/create-account/.

Skapa en MySQL RDS DB-instans

Eftersom vi ska migrera en MySQL-databas från CloudSQL till AWS RDS måste vi skapa en MySQL-databasinstans på RDS. Navigera till RDS på https://aws.amazon.com/rds och, i RDS-guiden, välj motor som MySQL, som visas i figur 1.


Figur 1: Väljer MySQL Database Engine

I Produktion? , välj Dev/Test , som visas i figur 2.


Figur 2: Välj utveckling och test

I Ange DB-detaljer , markera kryssrutan Visa endast alternativ som är kvalificerade för RDS Free Tier , som visas i figur 3. Välj Licensmodell som allmän-offentlig-licens. Välj DB Engine Version som MySQL 5.6.35. MySQL-versionerna 5.5, 5.6 och 5.7 stöds för DMS-mål. Välj DB Instance Class som db.t2.micro, som har en kapacitet på 1 vCPU och 1 GB RAM. Välj Multi-AZ-distribution som nr. Välj Storage Type as General Purpose (SSD) och allokerad lagring som 5 GB.


Figur 3: Ange DB-detaljer

Ange en DB-instansidentifierare i databasinställningar (mysqldb), huvudanvändarnamn och huvudlösenord, som visas i figur 4. Klicka på Nästa steg.


Figur 4: Ange databasinställningar

I Konfigurera avancerade inställningar väljer du en VPC, som visas i figur 5. DMS-migreringen ska skapas i samma VPC som RDS DB-instansen. Ställ in tillgänglighetszon som us-east-1b. Välj alternativet Skapa ny säkerhetsgrupp. I Databasalternativ, ange ett databasnamn (mysqldb). Ange en databasport (3306) och välj en DB-parametergrupp.


Figur 5: Konfigurera avancerade inställningar

De flesta eller alla andra inställningar – inklusive Alternativgrupp, Aktivera IAM DB-autentisering, Aktivera kryptering, Säkerhetskopiering och övervakning – kan behållas som standard (se figur 6). Automatiska säkerhetskopieringar krävs för att vara aktiverade för MySQL på RDS som DMS-källa. Klicka på Starta DB-instans .


Figur 6: Starta DB-instans

En ny DB-instans börjar skapas, vilket visas av meddelandet i figur 7. Klicka på Visa dina DB-instanser för att se DB-instanserna.


Figur 7: Din DB-instans skapas

En ny MySQL DB-instans på RDS startar, som visas i figur 8.


Figur 8: MySQL DB-instans på RDS

Klicka på länken Säkerhetsgrupp, som visas i figur 9, för att ändra reglerna för inkommande/utgående för att tillåta trafik från/till alla IP-adresser.


Figur 9: Säkerhetsgrupplänk

Välj fliken Inkommande och klicka på knappen Redigera för att ändra reglerna för inkommande, som visas i figur 10.


Figur 10: Ändra inkommande regler

I Redigera inkommande regler, ställ in Typ till All Traffic, Protocol to All, Port Range till 0-65535, Source to Anywhere, och klicka på Spara (se figur 11).


Figur 11: Redigera inkommande regler

De modifierade inkommande reglerna visas i figur 12.


Figur 12: Inkommande regler

De utgående reglerna behöver inte ändras eftersom de redan är inställda för att tillåta trafik till alla destinations-IP:er, som visas i figur 13.


Figur 13: Utgående regler

Ansluter till MySQL-databasen på RDS

Skaffa RDS DB-instansvärden från Endpoint; värdadressen är slutpunkten med portsuffixet :3306 borttaget. Anslut till MySQL-databasinstansen på RDS med värdadressen och porten med följande mysql-kommando för att starta ett MySQL-kommandoradsgränssnitt.

mysql --host=mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com --port=3306 --user=dvohra --password=mysql5db

Värden, användaren och lösenordet skulle vara olika för olika användare. Ge MySQL-kontoåtkomst till DMS-användaren med följande kommandon, där DMS-användaren skulle vara olika för olika användare.

GIVNA ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT PÅ mysqldb.* TO 'dvohra'@'%';GI ALLA PRIVILEGIER PÅ awsdms_control.* TO 'dvohra'@'%'; 

Skapa ett Google Cloud Platform-projekt

Du måste skapa ett Google Cloud Platform-projekt för att använda CloudSQL. För att skapa ett projekt klickar du på Skapa ett tomt projekt länken på sidan Komma igång, som visas i figur 14.


Figur 14: Skapa ett tomt projekt

I Nytt projekt guiden, ange ett projektnamn (MySQLDB) och klicka på Skapa , som visas i figur 15.


Figur 15: Nytt projekt

Ett nytt projekt skapas, som visas i instrumentpanelen i figur 16.


Figur 16: Nytt Google Cloud Platform-projekt

Skapa en CloudSQL-instans

I det här avsnittet ska vi skapa en CloudSQL-instans. Navigera till CloudSQL URL https://cloud.google.com/sql/ i en webbläsare, som visas i figur 17. Klicka på View Console.


Figur 17: Visa konsol

Välj MySQLDB projekt och klicka på Skapa instans , som visas i figur 18.


Figur 18: Skapa instans

I Skapa en instans guiden, välj MySQL och klicka på Nästa , som visas i figur 19.


Figur 19: Väljer motor som MySQL

I Välj en MySQL-instanstyp klickar du på Välj andra generationen för att välja MySQL andra generationens instanstyp, som visas i figur 20. Några av fördelarna med andra generationens instanstyp listas också.


Figur 20: Att välja en andra generationens MySQL-instans

I Skapa en MySQL andra generationens instans (se figur 21), ange ett instans-ID och ett rootlösenord och välj en Region och Zone. Klicka på Skapa .


Figur 21: Skapa en MySQL andra generationens instans

En MySQL-instans börjar skapas, som visas i tabellen Instans i figur 22.


Figur 22: CloudSQL MySQL-instans

Lägga till en rutt för CloudSQL DB-instansens IP-adress till VPC-rutttabellen

Vi måste ändra rutttabellen för VPC där RDS DB-instansen och DMS-migreringen skapas för att tillåta åtkomst till IP-adressen för CloudSQL-instansen. Skaffa först IP-adressen för CloudSQL-instansen från CloudSQL-konsolen, som visas i figur 23.


Figur 23: IP-adress för CloudSQL DB-instansen

Klicka på Rutttabell länk, som visas i figur 24, för den VPC där RDS DB-instansen skapas och DMS ska skapas därefter.


Figur 24: Länk till rutttabell

Välj rutten i listan och klicka på Redigera, som visas i figur 25.


Figur 25: Rutt>Redigera

Klicka på Lägg till en annan rutt (se figur 26).


Figur 26: Lägg till en annan rutt

Ange IP-adressen för CloudSQL-instansen i Destination, som visas i figur 27.


Figur 27: Ange destination som IP-adress för CloudSQL-instansen

Välj Target som Internet Gateway som är associerad med VPC, som visas i figur 28. En Internet Gateway tillåter kommunikation mellan instanserna i en VPC och Internet.


Figur 28: Välja Target som Internet Gateway

Klicka på Spara för att spara rutten. En rutt läggs till, som visas i figur 29.


Figur 29: Rutt för CloudSQL-instans

Skapa en DMS-replikeringsinstans

I det här avsnittet ska vi skapa en replikeringsinstans för att migrera en CloudSQL-instans till RDS. Klicka på Skapa migrering på startsidan för Database Migration Service, som visas i figur 30.


Figur 30: Skapa migrering

På välkomstsidan klickar du på Nästa (se figur 31).


Figur 31: Välkomstsida>Nästa

I Skapa replikeringsinstans sida, ange ett namn och en beskrivning, som visas i figur 32. Välj en instansklass som dms.t2.medium. Välj version av replikeringsmotorn som 2.2.1. Välj samma VPC som RDS DB-instansen skapades i. Välj Multi-AZ A No. Markera kryssrutan Allmänt tillgänglig.


Figur 32: Konfigurera en replikeringsinstans

I Avancerat, ange Allokerad lagring (50 GB), välj en replikeringsundernätsgrupp och välj Tillgänglighetszon på samma sätt som för RDS DB-instans, us-east-1b, som visas i figur 33. Välj standard VPC-säkerhetsgrupp. Välj KMS-huvudnyckeln som skapats för DMS.


Figur 33: Konfigurera avancerade alternativ

Välj standardinställningarna för underhåll och klicka på Nästa, som visas i figur 34.


Figur 34: Replikeringsinstans>Nästa

Meddelandet "Din replikeringsinstans skapas" visas, som visas i figur 35. Käll- och måldatabasens slutpunkter kan konfigureras först efter att replikeringsinstansen har skapats.


Figur 35: Din replikeringsinstans skapas

När replikeringsinstansen har skapats visas meddelandet "Replikeringsinstans skapad framgångsrikt" (se figur 36).


Figur 36: Replikeringsinstansen skapades framgångsrikt

Replikeringsinstanserna listar den nya replikeringsinstansen som skapats, som visas i figur 37.


Figur 37: Replikeringsinstanser

Lägga till ett nätverk för replikeringsinstansanslutning till CloudSQL DB-instans

Bestäm först vilken IP-adress som replikeringsinstansen körs på. IP-adressen kan erhållas från replikeringsinstanskonsolen, som visas i figur 38.


Figur 38: IP-adress för replikeringsinstans

Efter att ha erhållit IP-adressen ska vi lägga till ett nätverk som består av IP-adressen till MySQL-instansen på CloudSQL. Klicka på länken CloudSQL MySQL-instans, som visas i figur 39.


Figur 39: CloudSQL MySQL DB-instans

Klicka på Authorization MySQL Database Instance detaljsida, som visas i figur 40.


Figur 40: Auktorisering

Klicka på Lägg till nätverk (se figur 41).


Figur 41: Lägg till nätverk

I Nytt nätverk , ange ett nätverksnamn och nätverks-IP-adress som IP-adress för replikeringsinstansen, som visas i figur 42, och klicka på Klar.


Figur 42: Lägger till nytt nätverk till CloudSQL

Ett nytt nätverk läggs till, som visas i figur 43. Klicka på Spara för att spara nätverket.


Figur 43: Sparar nytt nätverk

Ett meddelande om "Instans uppdateras" visas, som visas i figur 44.


Figur 44: Förekomsten uppdateras

När instansen har uppdaterats indikerar instansikonen detsamma, som visas i figur 45.


Figur 45: Förekomsten uppdaterad

Klicka på Översikt (se figur 46) för att visa instansöversikten.


Figur 46: Översikt

Det nya nätverket listas i Auktoriserade nätverkInstansinformation sida, som visas i figur 47.


Figur 47: Auktoriserade nätverk

Skapa slutpunkter för databasreplikering

Därefter ska vi skapa käll- och måldatabasens slutpunkter. Ange slutpunktsidentifierare för käll- och måldatabaser. För källmotor, välj mysql , som visas i figur 48.


Figur 48: Väljer källmotor som mysql

Välj Målmotor som mysql också, som visas i figur 49.


Figur 49: Välj Target Engine som mysql

För källservernamnet, kopiera IPv4-adressen för CloudSQL-instansen, som visas i figur 50.


Figur 50: IPv4-adress för CloudSQL-instansen

För måldatabasen, ange servernamnet som Endpoint minus portsuffixet ":3306" för RDS DB-instansen för MySQL-databasen (se figur 51). Ange port för käll- och måldatabaser som 3306. Välj SSL-läge som ingen för både käll- och målanslutningar. Ange användarnamn för källdatabasen som root och lösenordet som ställts in när du skapar CloudSQL-instansen. På samma sätt ställer du in användarnamnet och lösenordet för måldatabasen på RDS.


Figur 51: Konfigurera käll- och måldatabasanslutningsdetaljer

För avsnittet Avancerat i både käll- och måldatabasen, välj KMS-huvudnyckeln dms, som skapades för DMS. Klicka på Kör test , som visas i figur 52, för källanslutningen. På samma sätt klickar du på Kör test för målanslutningen.


Figur 52: Kör test

Om resultatet av testet är "Anslutning testad framgångsrikt" för både käll- och måldatabasanslutningarna, klicka på Nästa, som visas i figur 53.


Figur 53: Testa anslutningar

Skapa en replikeringsuppgift

I Skapa uppgift anger du ett uppgiftsnamn och en uppgiftsbeskrivning, som visas i figur 54. Källändpunkten, måländpunkten och replikeringsinstansen är hårdkodade. Välj Migreringstyp som Migrera befintliga data. Markera kryssrutan Starta uppgift vid skapa.


Figur 54: Skapa uppgift

I Uppgiftsinställningar väljer/ställer du in läge för förberedelse av måltabell som Gör ingenting , Inkludera LOB-kolumner i replikering som Begränsat LOB-läge , och Max LOB-storlek som 32 kb, som visas i figur 55. Välj Aktivera loggning alternativ.


Figur 55: Uppgiftsinställningar

I Tabellmappningar , som visas i figur 56, måste minst en urvalsregel läggas till.


Figur 56: Tabellmappningar

Välj Ange ett schema alternativet i Schemanamnet är fält. Ange Schemanamnet är som mysql , som visas i figur 57. Ange Tabellnamnet är som innodb_index_stats. Välj Åtgärd som Inkludera . Klicka på Lägg till urvalsregel .


Figur 57: Lägga till en urvalsregel

Om du vill lägga till en annan urvalsregel klickar du på lägg till urvalsregel länk, som visas i figur 58.


Figur 58: Lägg till urvalsregel

Lägg till en urvalsregel för att inkludera tabellen mysql.innodb_table_stats , som visas i figur 59.


Figur 59: Lägger till en urvalsregel för mysql.innodb_table_stats

Urvalsregler kan läggas till, en för varje tabell, eller genom att använda ett reguljärt jokerteckenuttryck. Därefter ska vi använda en % för att lägga till en urvalsregel. Klicka på lägg till urvalsregel , som visas i figur 60.


Figur 60: Lägg till länk för urvalsregel

Ange Schema som mysql och ange Tabellnamn som tidszon% , som representerar alla tabeller som börjar med "tidszon" (se figur 61).


Figur 61: Lägger till en urvalsregel för att inkludera alla tabeller i mysql-schemat som börjar med time_zone

Klicka på Skapa uppgift för att skapa en uppgift, som visas i figur 62.


Figur 62: Skapa uppgift

En ny uppgift läggs till med statusen Skapar initialt, som visas i figur 63. Klicka på Uppdatera data från server regelbundet för att uppdatera aktivitetsstatusen.


Figur 63: Uppgift tillagd med status Skapar

När uppgiften har skapats och är redo att köras, blir statusen Klar, som visas i figur 64.


Figur 64: Uppgiftsstatus redo

Kör replikeringsuppgiften

För att starta replikeringsinstansen, klicka på Start/Fortsätt-knappen, som visas i figur 65.


Figur 65: Starta/Återuppta

Aktivitetsstatusen blir Startar (se figur 66). Med jämna mellanrum klickar du på Uppdatera data från server för att uppdatera statusen som visas i figur 66.


Figur 66: Uppgiftsstatus startar

Aktivitetsstatus blir Kör när uppgiften börjar köras. När den fullständiga laddningen har slutförts blir statusen Lastningen klar , som visas i figur 67.


Figur 67: Inläsningen är klar

Utforska de migrerade tabellerna

Tabellerna har laddats kolumnen har värdet 7 för de sju migrerade tabellerna, som visas i figur 68.


Figur 68: Sju tabeller migrerade

Om du vill hitta information om de migrerade tabellerna väljer du Tabellstatistik fliken, som visas i figur 69.


Figur 69: Tabellstatistik

Alla tabeller som har migrerats listas, som visas i figur 70.


Figur 70: Tabeller migrerade

Utforska CloudWatch-loggarna

För att utforska CloudWatch-loggarna, klicka på länken i Loggar fliken (se figur 71).


Figur 71: Loggar länk

CloudWatch-loggar visar en loggpost för varje migrerad tabell, som visas i figur 72. När alla tabeller som konfigurerats med hjälp av urvals- och transformationsreglerna har migrerats, läggs loggposten "Alla tabeller laddas" till.


Figur 72: CloudWatch-loggar

När alla tabeller har laddats avslutades en loggpost Uppgiftshantering läggs till, som visas i figur 73.


Figur 73: Uppgiftshanteringen avslutades

Ta bort en migrering

För att ta bort en migrering är sekvensen omvänd mot att skapa en migrering.

  1. Ta bort migreringsuppgifterna.
  2. Ta bort databasens slutpunkter.
  3. Ta bort replikeringsinstansen.

För att ta bort uppgiften, välj uppgiften och klicka på Ta bort, som visas i figur 74.


Figur 74: Uppgift>Ta bort

I dialogrutan Ta bort uppgift klickar du på Ta bort, som visas i figur 75.


Figur 75: Dialogrutan Ta bort uppgiftsbekräftelse

Aktivitetsstatusen blir Ta bort (se figur 76).


Figur 76: Ta bort uppgift

För att ta bort ändpunkterna, välj ändpunkterna och klicka på Ta bort, som visas i figur 77.


Figur 77: Endpoints>Ta bort

I Ta bort slutpunkt bekräftelsedialogrutan, klicka på Ta bort, som visas i figur 78.


Figur 78: Dialogrutan Ta bort slutpunktsbekräftelse

Statusen för ändpunkterna blir Deleting, som visas i figur 79.


Figur 79: Ta bort slutpunkter

För att ta bort en replikeringsinstans, välj replikeringsinstansen och klicka på Ta bort, som visas i figur 80.


Figur 80: Replikeringsinstanser>Ta bort

I Ta bort replikeringsinstansen bekräftelsedialogruta, klicka på Ta bort (se figur 81).


Figur 81: Dialogrutan för bekräftelse Ta bort replikeringsinstans

Statusen för replikeringsinstansen blir Deleting, som visas i figur 82.


Figur 82: Ta bort replikeringsinstans

Ta bort DB-instanser

Ta sedan bort käll- och måldatabaserna. För att ta bort måldatabasen, som är en MySQL-databas på RDS, välj databasinstansen i tabellen Alla instanser och klicka på Instansåtgärder>Ta bort, som visas i figur 83.


Figur 83: Instansåtgärder>Ta bort

I Ta bort DB-instans väljer du alternativet att inte skapa en slutlig ögonblicksbild och markerar kryssrutan för bekräftelse och klickar på Ta bort, som visas i figur 84.


Figur 84: Ta bort DB Instance Dialog

RDS DB-instansen börjar tas bort, vilket indikeras av Ta bort status i figur 85.


Figur 85: Radering av RDS DB-instans

För att ta bort CloudSQL DB-instansen högerklickar du på mysql DB-instanshanteringsikonen och välj Ta bort (se figur 86).


Figur 86: CloudSQL mysql>Ta bort

I Ta bort instans? bekräftelsedialogruta, ange instansnamnet i fältet för att bekräfta att instansen ska tas bort och klicka på Ta bort, som visas i figur 87.


Figur 87: Dialogrutan för bekräftelse av radera instans

Slutsats

I den här artikeln diskuterade vi migrering av MySQL på CloudSQL till AWS RDS med hjälp av AWS Database Migration Service.


  1. SQL Server Failover Cluster Installation -3

  2. ListView-kontroll med Ms-Access TreeView

  3. Hur använder jag ROW_NUMBER()?

  4. Dela upp ett kolumnvärde i flera kolumnvärden