Amazon RDS for MySQL migreren naar Azure Database for MySQL met Replicatie van inkomende gegevens

VAN TOEPASSING OP: Azure Database for MySQL - Single Server Azure Database for MySQL - Flexible Server

Notitie

Dit artikel bevat verwijzingen naar de term slave, een term die Microsoft niet meer gebruikt. Zodra de term uit de software wordt verwijderd, verwijderen we deze uit dit artikel.

U kunt methoden zoals MySQL-dump en -herstel, Exporteren en importeren van MySQL Workbench of Azure Database Migration Service gebruiken om uw MySQL-databases te migreren naar Azure Database for MySQL. Door gebruik te maken van een combinatie van opensource-hulpprogramma's zoals mysqldump of mydumper en myloader met Replicatie van inkomende gegevens, kunt u uw workloads met minimale downtime migreren.

Replicatie van inkomende gegevens is een techniek waarmee gegevenswijzigingen van de bronserver naar de doelserver worden gerepliceerd op basis van de binaire methode voor de positie van logboekbestanden. In dit scenario schrijft het MySQL-exemplaar dat als bron wordt gebruikt (waarvan de database verandert) updates en wijzigingen als gebeurtenissen naar het binaire logboek. De informatie in het binaire logboek wordt opgeslagen in verschillende indelingen voor logboekregistratie op basis van de databasewijzigingen die worden vastgelegd. Replica's zijn geconfigureerd om het binaire logboek uit de bron te lezen en de gebeurtenissen uit te voeren in het binaire logboek op de lokale database van de replica.

Als u Replicatie van inkomende gegevens hebt ingesteld om gegevens van een MySQL-bronserver te synchroniseren met een MySQL-doelserver, kunt u een selectieve cutover van uw toepassingen van de primaire (of brondatabase) naar de replica (of doeldatabase) maken.

In deze zelfstudie leert u hoe u Replicatie van inkomende gegevens in kunt stellen tussen een bronserver waarop Amazon Relational Database Service (RDS) voor MySQL wordt uitgevoerd en een doelserver waarop Azure Database for MySQL.

Prestatieoverwegingen

Voordat u met deze zelfstudie begint, moet u rekening houden met de gevolgen voor de prestaties van de locatie en capaciteit van de clientcomputer die u gebruikt om de bewerking uit te voeren.

Clientlocatie

Voer dump- of herstelbewerkingen uit vanaf een clientcomputer die wordt gestart op dezelfde locatie als de databaseserver:

  • Voor Azure Database for MySQL servers moet de clientmachine zich in hetzelfde virtuele netwerk en dezelfde beschikbaarheidszone als de doeldatabaseserver bevindt.
  • Voor amazon RDS-brondatabase-exemplaren moet het client-exemplaar bestaan in dezelfde Amazon Virtual Private Cloud en beschikbaarheidszone als de brondatabaseserver. In het voorgaande geval kunt u dumpbestanden verplaatsen tussen clientmachines met behulp van protocollen voor bestandsoverdracht, zoals FTP of SFTP, of ze uploaden naar Azure Blob Storage. Als u de totale migratietijd wilt verminderen, comprimeert u bestanden voordat u ze over dragen.

Clientcapaciteit

Ongeacht waar de clientcomputer zich bevindt, vereist deze voldoende reken-, I/O- en netwerkcapaciteit om de aangevraagde bewerkingen uit te voeren. De algemene aanbevelingen zijn:

  • Als de dump of herstel realtime verwerking van gegevens omvat, bijvoorbeeld compressie of decompressie, kiest u een instantieklasse met ten minste één CPU-kern per dump of herstelthread.
  • Zorg ervoor dat er voldoende netwerkbandbreedte beschikbaar is voor het client-exemplaar. Gebruik exemplaartypen die ondersteuning bieden voor de functie voor versneld netwerken. Zie de sectie Versneld netwerken in de Netwerkhandleiding voor virtuele Azure-machines voor meer informatie.
  • Zorg ervoor dat de opslaglaag van de clientmachine de verwachte lees-/schrijfcapaciteit biedt. U wordt aangeraden een virtuele Azure-machine te gebruiken met Premium SSD-opslag.

Vereisten

Voor het voltooien van deze zelfstudie hebt u het volgende nodig:

  • Installeer mysqlclient op uw clientcomputer om een dump te maken en voer een herstelbewerking uit op uw doelserver Azure Database for MySQL server.

  • Voor grotere databases installeert u mydumper en myloader voor parallel dumpen en herstellen van databases.

    Notitie

    Mydumper kan alleen worden uitgevoerd op Linux-distributies. Zie Mydumperinstalleren voor meer informatie.

  • Maak een exemplaar van Azure Database for MySQL server met versie 5.7 of 8.0.

    Belangrijk

    Als uw doel flexibele Azure Database for MySQL met zone-redundante hoge beschikbaarheid is, moet u er rekening mee houden dat Replicatie van inkomende gegevens niet wordt ondersteund voor deze configuratie. Als tijdelijke oplossing kunt u tijdens het maken van de server zone-redundante ha instellen:

    1. Maak de server met zone-redundante ha ingeschakeld.
    2. Ha uitschakelen.
    3. Volg het artikel voor het instellen van Replicatie van inkomende gegevens.
    4. Verwijder na de cutover de Replicatie van inkomende gegevens configuratie.
    5. Ha inschakelen.

Zorg ervoor dat verschillende parameters en functies correct zijn geconfigureerd en ingesteld, zoals beschreven:

  • Uit compatibiliteitsoverwegingen moet u de bron- en doeldatabaseservers op dezelfde MySQL-versie hebben.
  • Een primaire sleutel in elke tabel hebben. Een gebrek aan primaire sleutels in tabellen kan het replicatieproces vertragen.
  • Zorg ervoor dat de tekenset van de bron en de doeldatabase hetzelfde zijn.
  • Stel de wait_timeout parameter in op een redelijke tijd. De tijd is afhankelijk van de hoeveelheid gegevens of workload die u wilt importeren of migreren.
  • Controleer of al uw tabellen InnoDB gebruiken. De Azure Database for MySQL server ondersteunt alleen de InnoDB-opslagen engine.
  • Voor tabellen met veel secundaire indexen of voor tabellen die groot zijn, zijn de gevolgen van prestatieoverhead zichtbaar tijdens het herstellen. Wijzig de dumpbestanden zodat de instructies CREATE TABLE geen secundaire sleuteldefinities bevatten. Nadat u de gegevens hebt geïmporteerd, maakt u secundaire indexen opnieuw om de prestatieverbetering tijdens het herstelproces te voorkomen.

Ten slotte moet u zich voorbereiden op Replicatie van inkomende gegevens:

  • Controleer of de doelserver Azure Database for MySQL verbinding kan maken met de bronserver van Amazon RDS voor MySQL via poort 3306.
  • Zorg ervoor dat de Amazon RDS for MySQL-bronserver zowel inkomende als uitgaande verkeer op poort 3306 toestaat.
  • Zorg ervoor dat u site-naar-site-connectiviteit met uw bronserver biedt met behulp van Azure ExpressRoute of Azure VPN Gateway. Zie de Documentatie voor Azure Virtual Network voor meer informatie over het maken van Virtual Network netwerk. Zie ook de quickstart-artikelen met stapsgewijs details.
  • Configureer de netwerkbeveiligingsgroepen van de brondatabaseserver om het IP-adres van Azure Database for MySQL doeldatabaseserver toe te staan.

Belangrijk

Als de bron-instantie van Amazon RDS for MySQL GTID_mode is ingesteld op AAN, moet voor het doel exemplaar van Azure Database for MySQL Flexible Server ook een GTID_mode zijn ingesteld op AAN.

Het doel-exemplaar van de Azure Database for MySQL

Het doel-exemplaar van Azure Database for MySQL configureren. Dit is het doel voor Replicatie van inkomende gegevens:

  1. Stel de max_allowed_packet parameterwaarde in op het maximum van 1073741824, wat 1 GB is. Deze waarde voorkomt overloopproblemen met betrekking tot lange rijen.

  2. Stel de parameters , , en tijdens de migratie in op UIT om eventuele overhead met betrekking tot slow_query_log general_log audit_log_enabled query_store_capture_mode logboekregistratie van query's te voorkomen.

  3. Schaal de rekenkracht van de doelserver Azure Database for MySQL maximaal 64 vCores. Deze grootte biedt meer rekenresources wanneer u de databasedump vanaf de bronserver herstelt.

    U kunt de rekenkracht altijd terugschalen om te voldoen aan de eisen van uw toepassing nadat de migratie is voltooid.

  4. Schaal de opslaggrootte omhoog om meer IOPS te krijgen tijdens de migratie of verhoog de maximale IOPS voor de migratie.

    Notitie

    De beschikbare maximale IOPS wordt bepaald door de rekenkracht. Zie de sectie IOPS in Compute and storage options in Azure Database for MySQL - Flexible Server voor meer informatie.

De bron-Amazon RDS for MySQL-server configureren

De MySQL-server voorbereiden en configureren die wordt gehost in Amazon RDS. Dit is de bron voor Replicatie van inkomende gegevens:

  1. Controleer of binaire logboekregistratie is ingeschakeld op de bronserver van Amazon RDS for MySQL. Controleer of automatische back-ups zijn ingeschakeld of controleer of er een leesreplica bestaat voor de bron-Amazon RDS voor MySQL-server.

  2. Zorg ervoor dat de binaire logboekbestanden op de bronserver bewaard blijven totdat de wijzigingen zijn toegepast op het doel-exemplaar van Azure Database for MySQL.

    Met Replicatie van inkomende gegevens beheert Azure Database for MySQL het replicatieproces niet.

  3. Als u de binaire logboekretentie op de Amazon RDS-bronserver wilt controleren om te bepalen hoeveel uur de binaire logboeken worden bewaard, roept u de mysql.rds_show_configuration opgeslagen procedure aan:

    mysql> call mysql.rds_show_configuration;
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | name                   | value | description                                                                                               |
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | binlog retention hours | 24    | binlog retention hours specifies the duration in hours before binary logs are automatically deleted.      |
    | source delay           | 0     | source delay specifies replication delay in seconds between current instance and its master.              |
    | target delay           | 0     | target delay specifies replication delay in seconds between current instance and its future read-replica. |
    +------------------------+-------            +-----------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
  4. Als u de bewaarperiode voor binaire logboeken wilt configureren, moet u de opgeslagen procedure uitvoeren om ervoor te zorgen dat de binaire logboeken op de bronserver worden bewaard voor de gewenste rds_set_configuration tijdsduur. Bijvoorbeeld:

    Mysql> Call mysql.rds_set_configuration(‘binlog retention hours', 96);
    

    Als u een dump maakt en vervolgens herstelt, kunt u met de voorgaande opdracht snel de deltawijzigingen inhalen.

    Notitie

    Zorg ervoor dat er voldoende schijfruimte is om de binaire logboeken op de bronserver op te slaan op basis van de retentieperiode die is gedefinieerd.

Er zijn twee manieren om een dump van gegevens van de bron-Amazon RDS for MySQL-server vast te leggen. Een van de benaderingen is het vastleggen van een dump van gegevens rechtstreeks vanaf de bronserver. De andere aanpak omvat het vastleggen van een dump van een Leesreplica van Amazon RDS for MySQL.

  • Een dump van gegevens rechtstreeks vanaf de bronserver vastleggen:

    1. Zorg ervoor dat u de schrijf schrijft vanuit de toepassing een paar minuten stopt om een transactioneel consistente dump van gegevens op te halen.

      U kunt de parameter ook tijdelijk instellen op een waarde read_only van 1, zodat schrijfgegevens niet worden verwerkt wanneer u een dump met gegevens vast legt.

    2. Nadat u de schrijf schrijft op de bronserver hebt gestopt, verzamelt u de naam van het binaire logboekbestand en offset door de opdracht uit te Mysql> Show master status; voeren.

    3. Sla deze waarden op om de replicatie vanaf uw Azure Database for MySQL starten.

    4. Als u een dump van de gegevens wilt maken, voert mysqldump u uit door de volgende opdracht uit te voeren:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Als het stoppen van schrijfgegevens op de bronserver geen optie is of als de prestaties van het dumpen van gegevens niet acceptabel zijn op de bronserver, legt u een dump vast op een replicaserver:

    1. Maak een Amazon MySQL-leesreplica met dezelfde configuratie als de bronserver. Maak daar vervolgens de dump.

    2. Laat de Amazon RDS for MySQL-replica de bronreplica van Amazon RDS for MySQL lezen.

    3. Wanneer de replicavertraging 0 is op de leesreplica, stopt u de replicatie door de opgeslagen mysql.rds_stop_replication procedure aan te roepen.

      Mysql> call mysql.rds_stop_replication;
      
    4. Als de replicatie is gestopt, maakt u verbinding met de replica. Voer vervolgens de opdracht uit om de naam van het huidige binaire logboekbestand op te halen uit Relay_Master_Log_File veld en de positie van het logboekbestand uit SHOW SLAVE STATUS het Exec_Master_Log_Pos veld.

    5. Sla deze waarden op om de replicatie vanaf uw Azure Database for MySQL starten.

    6. Als u een dump wilt maken van de gegevens uit de leesreplica van Amazon RDS for MySQL, voert u mysqldump uit door de volgende opdracht uit te voeren:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      

    Notitie

    U kunt mydumper ook gebruiken voor het vastleggen van een ge parallelliseerde dump van uw gegevens uit de Amazon RDS for MySQL-brondatabase. Zie Grote databases migreren naar een Azure Database for MySQL met mydumper/myloader voor meer informatie.

  1. Voer de volgende opdracht uit om de database te herstellen met behulp van systeemeigen mysql-herstel:

    $ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
    

    Notitie

    Als u in plaats daarvan myloader gebruikt, zie Grote databases migreren naar Azure Database for MySQL met mydumper/myloader.

  2. Meld u aan bij de bronserver van Amazon RDS for MySQL en stel een replicatiegebruiker in. Verleen deze gebruiker vervolgens de benodigde bevoegdheden.

    • Als u SSL gebruikt, voert u de volgende opdrachten uit:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      
    • Als u geen SSL gebruikt, voert u de volgende opdrachten uit:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%'; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      

    Alle Replicatie van inkomende gegevens worden uitgevoerd door opgeslagen procedures. Zie opgeslagen procedures voor Replicatie van inkomende gegevens procedures voor meer informatie over alle procedures. U kunt deze opgeslagen procedures uitvoeren in de MySQL-shell of MySQL Workbench.

  3. Als u de Amazon RDS for MySQL-bronserver en de Azure Database for MySQL-doelserver wilt koppelen, moet u zich aanmelden bij de doelserver Azure Database for MySQL doelserver. Stel de Amazon RDS for MySQL-server in als bronserver door de volgende opdracht uit te voeren:

    CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');
    
  4. Voer de volgende opdracht uit om de replicatie tussen de bronserver Amazon RDS for MySQL en de doelserver Azure Database for MySQL starten:

    Mysql> CALL mysql.az_replication_start;
    
  5. Voer op de replicaserver de volgende opdracht uit om de status van de replicatie te controleren:

    Mysql> show slave status\G
    

    Als de status van de parameters en Ja is, is de replicatie Slave_IO_Running gestart en wordt deze Slave_SQL_Running uitgevoerd.

  6. Controleer de waarde van de Seconds_Behind_Master parameter om te bepalen hoe vertraagd de doelserver is.

    Als de waarde 0 is, heeft het doel alle updates van de bronserver verwerkt. Als de waarde iets anders is dan 0, verwerkt de doelserver nog steeds updates.

Een geslaagde cutover garanderen

Om een geslaagde cutover te garanderen:

  1. Configureer de juiste aanmeldingen en machtigingen op databaseniveau in Azure Database for MySQL doelserver.
  2. Stop het schrijven naar de bronserver van Amazon RDS for MySQL.
  3. Zorg ervoor dat de doelserver Azure Database for MySQL de bronserver heeft ingeslagen en dat de waarde Seconds_Behind_Master 0 is van show slave status .
  4. Roep de opgeslagen procedure aan om de replicatie te stoppen omdat alle wijzigingen mysql.az_replication_stop zijn gerepliceerd naar de doelserver Azure Database for MySQL server.
  5. Roep mysql.az_replication_remove_master aan om de configuratie Replicatie van inkomende gegevens verwijderen.
  6. Clients en clienttoepassingen omleiden naar de doelserver Azure Database for MySQL server.

Op dit moment is de migratie voltooid. Uw toepassingen zijn verbonden met de server met Azure Database for MySQL.

Volgende stappen