Google CloudSQL is een beheerde service voor databases met ondersteuning voor MySQL en PostgreSQL. CloudSQL kan worden geïntegreerd met enkele van de andere Google Cloud Platform-services, inclusief gegevensreplicatie over meerdere zones met automatische failover. In dit artikel bespreken we het migreren van een MySQL-database-instantie van Google CloudSQL naar AWS RDS met behulp van Database Migration Service (DMS). Dit artikel heeft de volgende secties:
- De omgeving instellen
- Een MySQL RDS DB-instantie maken
- Verbinding maken met MySQL-database op RDS
- Een Google Cloud Platform-project maken
- Een CloudSQL-instantie maken
- Een route voor CloudSQL DB-instantie IP-adres toevoegen aan de VPC-routetabel
- Een DMS-replicatie-instantie maken
- Een netwerk voor replicatie-instance-connectiviteit toevoegen aan CloudSQL DB-instance
- Databasereplicatie-eindpunten maken
- Een replicatietaak maken
- De replicatietaak uitvoeren
- De gemigreerde tabellen verkennen
- De CloudWatch-logboeken verkennen
- Een migratie verwijderen
- DB-instanties verwijderen
- Conclusie
De omgeving instellen
Een Google Cloud Platform-factureringsaccount is vereist. Google Cloud Platform Free Tier-account biedt een gratis proefperiode voor het eerste jaar. Een AWS-account is ook vereist; dit kan worden gemaakt op https://aws.amazon.com/resources/create-account/.
Een MySQL RDS DB-instantie maken
Omdat we een MySQL-database van CloudSQL naar AWS RDS gaan migreren, moeten we een MySQL-database-instantie op RDS maken. Navigeer naar RDS op https://aws.amazon.com/rds en selecteer in de RDS-wizard engine als MySQL, zoals weergegeven in afbeelding 1.
Figuur 1: MySQL Database Engine selecteren
In Productie? , selecteer Ontwikkeling/Test , zoals weergegeven in afbeelding 2.
Figuur 2: Ontwikkeling &Test selecteren
In DB-details opgeven , selecteer het selectievakje Alleen opties weergeven die in aanmerking komen voor RDS Free Tier , zoals weergegeven in Afbeelding 3. Selecteer Licentiemodel als algemene openbare licentie. Selecteer DB Engine-versie als MySQL 5.6.35. MySQL-versies 5.5, 5.6 en 5.7 worden ondersteund voor DMS-doel. Selecteer DB Instance Class als db.t2.micro, met een capaciteit van 1 vCPU en 1 GB RAM. Selecteer Multi-AZ-implementatie als Nee. Selecteer Opslagtype als Algemeen gebruik (SSD) en toegewezen opslagruimte als 5 GB.
Figuur 3: Specificeer DB-details
Specificeer in de database-instellingen een DB Instance-ID (mysqldb), Hoofdgebruikersnaam en Hoofdwachtwoord, zoals weergegeven in Afbeelding 4. Klik op Volgende stap.
Figuur 4: Database-instellingen specificeren
Selecteer in Geavanceerde instellingen configureren een VPC, zoals weergegeven in afbeelding 5. De DMS-migratie wordt gemaakt in dezelfde VPC als de RDS DB-instantie. Stel Beschikbaarheidszone in als us-oost-1b. Selecteer de optie om een nieuwe beveiligingsgroep te maken. Geef in Database-opties een databasenaam op (mysqldb). Specificeer een databasepoort (3306) en selecteer een DB-parametergroep.
Figuur 5: Geavanceerde instellingen configureren
De meeste of alle andere instellingen, waaronder Optiegroep, IAM DB-authenticatie inschakelen, Encryptie inschakelen, Back-up en Monitoring, kunnen als standaard worden behouden (zie Afbeelding 6). Automatische back-ups moeten zijn ingeschakeld voor MySQL op RDS als DMS-bron. Klik op DB-instantie starten .
Figuur 6: Start DB-instantie
Er wordt een nieuwe DB-instantie gemaakt, zoals blijkt uit het bericht in Afbeelding 7. Klik op Uw DB-instanties weergeven om de DB-instanties te bekijken.
Figuur 7: Uw DB-instantie wordt gemaakt
Een nieuwe MySQL DB-instantie op RDS wordt gestart, zoals weergegeven in Afbeelding 8.
Figuur 8: MySQL DB-instantie op RDS
Klik op de koppeling Beveiligingsgroep, zoals weergegeven in Afbeelding 9, om de regels voor inkomend/uitgaand verkeer te wijzigen om verkeer van/naar alle IP-adressen toe te staan.
Figuur 9: Koppeling beveiligingsgroep
Selecteer het tabblad Inkomend en klik op de knop Bewerken om de inkomende regels te wijzigen, zoals weergegeven in Afbeelding 10.
Figuur 10: Inkomende regels wijzigen
Stel in Inkomende regels bewerken Type in op Alle verkeer, Protocol op alles, Poortbereik op 0-65535, Bron op overal en klik op Opslaan (zie Afbeelding 11).
Figuur 11: Inkomende regels bewerken
De gewijzigde regels voor inkomend verkeer worden weergegeven in Afbeelding 12.
Figuur 12: Inkomende regels
De uitgaande regels hoeven niet te worden gewijzigd omdat ze al zijn ingesteld om verkeer naar alle bestemmings-IP's toe te staan, zoals weergegeven in afbeelding 13.
Figuur 13: Uitgaande regels
Verbinding maken met MySQL-database op RDS
Verkrijg de RDS DB-instantiehost van het eindpunt; het hostadres is het eindpunt met het poortachtervoegsel :3306 verwijderd. Maak verbinding met de MySQL-database-instantie op RDS met behulp van het hostadres en de poort met de volgende mysql-opdracht om een MySQL-opdrachtregelinterface te starten.
mysql --host=mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com --port=3306 --user=dvohra --password=mysql5db
De host, gebruiker en wachtwoord zijn voor verschillende gebruikers verschillend. Verleen MySQL-accounttoegang aan de DMS-gebruiker met de volgende opdrachten, waarbij de DMS-gebruiker voor verschillende gebruikers anders zou zijn.
WIJS ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON mysqldb.* TO 'dvohra'@'%'; pre>Een Google Cloud Platform-project maken
U moet een Google Cloud Platform-project maken om CloudSQL te gebruiken. Om een project aan te maken, klikt u op Een leeg project maken link op de pagina Aan de slag, zoals weergegeven in Afbeelding 14.
Figuur 14: Maak een leeg projectIn het Nieuw project wizard, specificeer een projectnaam (MySQLDB) en klik op Maken , zoals weergegeven in Afbeelding 15.
Figuur 15: Nieuw projectEr wordt een nieuw project aangemaakt, zoals weergegeven in het Dashboard in Afbeelding 16.
Figuur 16: Nieuw Google Cloud Platform-projectEen CloudSQL-instantie maken
In deze sectie zullen we een CloudSQL-instantie maken. Navigeer naar de CloudSQL-URL https://cloud.google.com/sql/ in een browser, zoals weergegeven in Afbeelding 17. Klik op View Console.
Figuur 17: Console bekijkenSelecteer de MySQLDB project en klik op Exemplaar maken , zoals weergegeven in Afbeelding 18.
Figuur 18: Instantie makenIn de Een instantie maken wizard, selecteer MySQL en klik op Volgende , zoals weergegeven in Afbeelding 19.
Figuur 19: Engine kiezen als MySQLIn Kies een MySQL-instantietype , klik op Tweede generatie kiezen om het MySQL-instantietype van de tweede generatie te selecteren, zoals weergegeven in Afbeelding 20. Enkele voordelen van het instantietype van de tweede generatie worden ook vermeld.
Figuur 20: Een MySQL-instantie van de tweede generatie kiezenIn Een MySQL Second Generation-instantie maken (zie Afbeelding 21), specificeer een Instance ID en een Rootwachtwoord en selecteer een Regio en Zone. Klik op Maken .
Figuur 21: Maak een MySQL Second Generation-instantieEr wordt een MySQL-instantie gemaakt, zoals weergegeven in de tabel Instances in Afbeelding 22.
Figuur 22: CloudSQL MySQL-instantieEen route voor CloudSQL DB-instantie IP-adres toevoegen aan de VPC-routetabel
We moeten de routetabel wijzigen voor de VPC waarin de RDS DB-instantie en DMS-migratie worden gemaakt om toegang te krijgen tot het IP-adres van de CloudSQL-instantie. Verkrijg eerst het IP-adres van de CloudSQL-instantie van de CloudSQL-console, zoals weergegeven in Afbeelding 23.
Figuur 23: IP-adres van de CloudSQL DB-instantieKlik op de Routetabel link, zoals weergegeven in Afbeelding 24, voor de VPC waarin de RDS DB-instantie wordt gemaakt en DMS wordt vervolgens gemaakt.
Figuur 24: Routetabel linkSelecteer de weergegeven route en klik op Bewerken, zoals weergegeven in Afbeelding 25.
Figuur 25: Route>BewerkenKlik op Nog een route toevoegen (zie afbeelding 26).
Figuur 26: Nog een route toevoegenSpecificeer het IP-adres van de CloudSQL-instantie in Destination, zoals weergegeven in Afbeelding 27.
Figuur 27: Bestemming specificeren als het IP-adres van de CloudSQL-instantieSelecteer het doel als de internetgateway die is gekoppeld aan de VPC, zoals weergegeven in afbeelding 28. Een internetgateway maakt communicatie mogelijk tussen de instanties in een VPC en internet.
Figuur 28: Doel selecteren als internetgatewayKlik op Opslaan om de route op te slaan. Er wordt een route toegevoegd, zoals weergegeven in Afbeelding 29.
Figuur 29: Route voor CloudSQL-instantieEen DMS-replicatie-instantie maken
In deze sectie zullen we een replicatie-instantie maken voor het migreren van een CloudSQL-instantie naar RDS. Klik op Migratie maken op de startpagina van de Database Migration Service, zoals weergegeven in Afbeelding 30.
Figuur 30: Migratie makenKlik op de welkomstpagina op Volgende (zie Afbeelding 31).
Figuur 31: Welkomstpagina>VolgendeIn de Replicatie-instantie maken pagina, geef een naam en beschrijving op, zoals weergegeven in Afbeelding 32. Selecteer een instantieklasse als dms.t2.medium. Selecteer versie van de replicatie-engine als 2.2.1. Selecteer dezelfde VPC waarin de RDS DB-instantie is gemaakt. Selecteer Multi-AZ A Nee. Selecteer het selectievakje Openbaar toegankelijk.
Figuur 32: Een replicatie-instantie configurerenGeef in Geavanceerd de Toegewezen opslag (50 GB) op, selecteer een replicatiesubnetgroep en selecteer Beschikbaarheidszone als hetzelfde als voor RDS DB-instantie, us-east-1b, zoals weergegeven in Afbeelding 33. Selecteer de standaard VPC-beveiligingsgroep. Selecteer de KMS-hoofdsleutel die voor DMS is gemaakt.
Figuur 33: Geavanceerde opties configurerenSelecteer de standaard Onderhoudsinstellingen en klik op Volgende, zoals weergegeven in Afbeelding 34.
Figuur 34: Replicatie-instantie>VolgendeHet bericht "Uw replicatie-instantie wordt gemaakt" wordt weergegeven, zoals weergegeven in Afbeelding 35. De bron- en doeldatabase-eindpunten kunnen pas worden geconfigureerd nadat de replicatie-instantie is gemaakt.
Figuur 35: Uw replicatie-instantie wordt gemaaktWanneer de replicatie-instantie is gemaakt, wordt het bericht "Replicatie-instantie gemaakt met succes" weergegeven (zie Afbeelding 36).
Figuur 36: Replicatie-instantie succesvol gemaaktDe replicatie-instanties geven een lijst weer van de nieuwe replicatie-instantie die is gemaakt, zoals weergegeven in Afbeelding 37.
Figuur 37: Replicatie-instantiesEen netwerk voor replicatie-instance-connectiviteit toevoegen aan CloudSQL DB-instance
Bepaal eerst het IP-adres waarop de replicatie-instantie wordt uitgevoerd. Het IP-adres kan worden verkregen via de console van de replicatie-instantie, zoals weergegeven in Afbeelding 38.
Figuur 38: IP-adres voor replicatie-instantieNadat we het IP-adres hebben verkregen, zullen we vervolgens een netwerk dat bestaat uit het IP-adres toevoegen aan de MySQL-instantie op CloudSQL. Klik op de CloudSQL MySQL-instantielink, zoals weergegeven in Afbeelding 39.
Figuur 39: CloudSQL MySQL DB-instantieKlik op Autorisatie MySQL-database-instantie detailpagina, zoals weergegeven in Afbeelding 40.
Figuur 40: AutorisatieKlik op Netwerk toevoegen (zie Afbeelding 41).
Figuur 41: Netwerk toevoegenIn Nieuw netwerk , specificeer een netwerknaam en netwerk-IP-adres als het IP-adres van de replicatie-instantie, zoals weergegeven in Afbeelding 42, en klik op Gereed.
Figuur 42: Nieuw netwerk toevoegen aan CloudSQLEr wordt een nieuw netwerk toegevoegd, zoals weergegeven in Afbeelding 43. Klik op Opslaan om het netwerk op te slaan.
Figuur 43: Nieuw netwerk opslaanHet bericht 'Instance wordt updated' wordt weergegeven, zoals weergegeven in Afbeelding 44.
Figuur 44: Instantie wordt bijgewerktWanneer de instantie is bijgewerkt, geeft het instantiepictogram hetzelfde aan, zoals weergegeven in Afbeelding 45.
Figuur 45: Instantie bijgewerktKlik op Overzicht (zie Afbeelding 46) om het instantieoverzicht weer te geven.
Figuur 46: OverzichtHet nieuwe netwerk wordt vermeld in Geautoriseerde netwerken op de Instance Details pagina, zoals weergegeven in Afbeelding 47.
Figuur 47: Geautoriseerde netwerkenDatabasereplicatie-eindpunten maken
Vervolgens zullen we de bron- en doeldatabase-eindpunten maken. Geef eindpunt-ID's op voor bron- en doeldatabases. Selecteer voor Bron-engine mysql , zoals weergegeven in Afbeelding 48.
Figuur 48: Bron-engine selecteren als mysqlSelecteer Target engine als mysql ook, zoals weergegeven in Afbeelding 49.
Figuur 49: Target Engine selecteren als mysqlKopieer voor de naam van de bronserver het IPv4-adres van de CloudSQL-instantie, zoals weergegeven in Afbeelding 50.
Figuur 50: IPv4-adres van de CloudSQL-instantieGeef voor de doeldatabase de servernaam op als het eindpunt minus het poortsuffix ":3306" voor de RDS DB-instantie voor de MySQL-database (zie Afbeelding 51). Specificeer Poort voor bron- en doeldatabases als 3306. Selecteer SSL-modus als geen voor zowel bron- als doelverbindingen. Geef de gebruikersnaam voor de brondatabase op als root en het wachtwoord zoals ingesteld bij het maken van de CloudSQL-instantie. Stel op dezelfde manier de gebruikersnaam en het wachtwoord in voor de doeldatabase op RDS.
Figuur 51: Verbindingsdetails voor bron- en doeldatabase configurerenSelecteer voor het gedeelte Geavanceerd van zowel de bron- als de doeldatabase de KMS-hoofdsleutel dms, die is gemaakt voor DMS. Klik op Test uitvoeren , zoals weergegeven in Afbeelding 52, voor de bronaansluiting. Klik op dezelfde manier op Test uitvoeren voor de doelverbinding.
Figuur 52: Test uitvoerenAls het resultaat van de test "Verbinding met succes getest" is voor zowel de bron- als de doeldatabaseverbindingen, klikt u op Volgende, zoals weergegeven in Afbeelding 53.
Figuur 53: Verbindingen testenEen replicatietaak maken
Geef in Taak maken een taaknaam en taakbeschrijving op, zoals weergegeven in Afbeelding 54. Het broneindpunt, het doeleindpunt en de replicatie-instantie zijn hard gecodeerd. Selecteer Migratietype als Bestaande gegevens migreren. Schakel het selectievakje Taak starten bij aanmaken in.
Figuur 54: Taak makenSelecteer/stel in Taakinstellingen Doeltabelvoorbereidingsmodus in als Niets doen , LOB-kolommen opnemen in replicatie als Beperkte LOB-modus , en Max LOB-grootte 32 kb, zoals weergegeven in Afbeelding 55. Selecteer de optie Logboekregistratie inschakelen optie.
Figuur 55: TaakinstellingenIn Tabeltoewijzingen , weergegeven in Afbeelding 56, moet ten minste één selectieregel worden toegevoegd.
Figuur 56: TabeltoewijzingenSelecteer de Voer een schema in optie in de Schemanaam is veld. Specificeer Schemanaam is als mysql , zoals weergegeven in Afbeelding 57. Specificeer Tabelnaam is als innodb_index_stats. Selecteer Actie als Opnemen . Klik op Selectieregel toevoegen .
Figuur 57: Een selectieregel toevoegenOm nog een selectieregel toe te voegen, klikt u op de selectieregel toevoegen link, zoals weergegeven in Afbeelding 58.
Figuur 58: Selectieregel toevoegenVoeg een selectieregel toe om tabel mysql.innodb_table_stats op te nemen , zoals weergegeven in Afbeelding 59.
Figuur 59: Een selectieregel toevoegen voor mysql.innodb_table_statsEr kunnen selectieregels worden toegevoegd, één voor elke tabel, of door een reguliere expressie met jokertekens te gebruiken. Vervolgens zullen we een % gebruiken om een selectieregel toe te voegen. Klik op selectieregel toevoegen , zoals weergegeven in Afbeelding 60.
Figuur 60: Link naar selectieregel toevoegenSpecificeer Schema als mysql en specificeer Tabelnaam als time_zone% , die alle tabellen vertegenwoordigt die beginnen met "time_zone" (zie Afbeelding 61).
Figuur 61: Een selectieregel toevoegen om alle tabellen in het mysql-schema op te nemen, beginnend met time_zoneKlik op Taak maken om een taak te maken, zoals weergegeven in Afbeelding 62.
Figuur 62: Taak makenEr wordt een nieuwe taak toegevoegd met de status Aanmaken in eerste instantie, zoals weergegeven in Afbeelding 63. Klik op Gegevens vernieuwen van server periodiek om de taakstatus te vernieuwen.
Figuur 63: Taak toegevoegd met status AanmakenWanneer de taak is gemaakt en klaar is om te worden uitgevoerd, wordt de Status Gereed, zoals weergegeven in Afbeelding 64.
Figuur 64: Taakstatus gereedDe replicatietaak uitvoeren
Om de replicatie-instantie te starten, klikt u op de knop Start/Resume, zoals weergegeven in Afbeelding 65.
Figuur 65: Start/HervatDe taakstatus wordt Begint (zie Afbeelding 66). Klik regelmatig op Gegevens vernieuwen van server knop om de status te vernieuwen zoals weergegeven in Afbeelding 66.
Figuur 66: Taakstatus begintTaakstatus wordt Bezig wanneer de taak begint te lopen. Wanneer de volledige lading is voltooid, wordt de status Laden voltooid , zoals weergegeven in Afbeelding 67.
Figuur 67: Laden voltooidDe gemigreerde tabellen verkennen
De Tabellen geladen kolom heeft een waarde van 7 voor de zeven tabellen die zijn gemigreerd, zoals weergegeven in Afbeelding 68.
Figuur 68: Zeven tabellen gemigreerdOm details over de gemigreerde tabellen te vinden, selecteert u de Tabelstatistieken tabblad, zoals weergegeven in Afbeelding 69.
Figuur 69: TabelstatistiekenAlle tabellen die zijn gemigreerd, worden weergegeven, zoals weergegeven in Afbeelding 70.
Figuur 70: Tabellen gemigreerdDe CloudWatch-logboeken verkennen
Om de CloudWatch-logboeken te verkennen, klikt u op de link in de Logs tabblad (zie Afbeelding 71).
Figuur 71: LogboeklinkCloudWatch-logboeken geven een logboekitem weer voor elke gemigreerde tabel, zoals weergegeven in Afbeelding 72. Wanneer alle tabellen die zijn geconfigureerd met behulp van de selectie- en transformatieregels zijn gemigreerd, wordt het logboekitem "Alle tabellen zijn geladen" toegevoegd.
Figuur 72: CloudWatch-logboekenWanneer alle tabellen zijn geladen, is een logboekitem Taakbeheer beëindigd wordt toegevoegd, zoals weergegeven in Afbeelding 73.
Figuur 73: Taakbeheer beëindigdEen migratie verwijderen
Om een migratie te verwijderen, is de volgorde omgekeerd van het maken van een migratie.
- Verwijder de migratietaak(en).
- Verwijder de database-eindpunten.
- Verwijder de replicatie-instantie.
Om de taak te verwijderen, selecteert u de taak en klikt u op Verwijderen, zoals weergegeven in Afbeelding 74.
Figuur 74: Taak>VerwijderenKlik in het dialoogvenster Taak verwijderen op Verwijderen, zoals weergegeven in Afbeelding 75.
Figuur 75: Dialoogvenster Taakbevestiging verwijderenDe taakstatus wordt Verwijderen (zie Afbeelding 76).
Figuur 76: Taak verwijderenOm de eindpunten te verwijderen, selecteert u de eindpunten en klikt u op Verwijderen, zoals weergegeven in Afbeelding 77.
Figuur 77: Eindpunten>VerwijderenIn het Eindpunt verwijderen bevestigingsvenster, klikt u op Verwijderen, zoals weergegeven in Afbeelding 78.
Figuur 78: Dialoogvenster voor bevestiging van eindpunt verwijderenDe status voor de eindpunten wordt Verwijderen, zoals weergegeven in Afbeelding 79.
Figuur 79: Eindpunten verwijderenOm een replicatie-instantie te verwijderen, selecteert u de replicatie-instantie en klikt u op Verwijderen, zoals weergegeven in Afbeelding 80.
Figuur 80: Replicatie-instanties>VerwijderenIn de Replicatie-instantie verwijderen bevestigingsvenster, klikt u op Verwijderen (zie Afbeelding 81).
Figuur 81: Bevestigingsdialoogvenster Replicatie-instantie verwijderenDe status voor de replicatie-instantie wordt Verwijderen, zoals weergegeven in Afbeelding 82.
Figuur 82: Replicatie-instantie verwijderenDB-instanties verwijderen
Verwijder vervolgens de bron- en doeldatabases. Om de doeldatabase, een MySQL-database op RDS, te verwijderen, selecteert u de database-instantie in de tabel Alle instanties en klikt u op Instantieacties>Verwijderen, zoals weergegeven in Afbeelding 83.
Figuur 83: Instantieacties>VerwijderenSelecteer in Delete DB instance de optie om geen definitieve momentopname te maken en schakel het selectievakje voor bevestiging in en klik op Delete, zoals weergegeven in Afbeelding 84.
Figuur 84: Dialoogvenster DB-instantie verwijderenHet RDS DB-exemplaar begint te worden verwijderd, zoals aangegeven door de status Verwijderen in Afbeelding 85.
Figuur 85: RDS DB-instantie verwijderenOm de CloudSQL DB-instantie te verwijderen, klikt u met de rechtermuisknop op de mysql DB-instantiebeheerpictogram en selecteer Verwijderen (zie Afbeelding 86).
Figuur 86: CloudSQL mysql>VerwijderenIn de Exemplaar verwijderen? bevestigingsvenster, specificeert u de instantienaam in het daarvoor bestemde veld om te bevestigen dat de instantie moet worden verwijderd en klikt u op Verwijderen, zoals weergegeven in Afbeelding 87.
Figuur 87: Bevestigingsdialoogvenster instantie verwijderenConclusie
In dit artikel hebben we het migreren van MySQL op CloudSQL naar AWS RDS met AWS Database Migration Service besproken.