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:
- Maak de server met zone-redundante ha ingeschakeld.
- Ha uitschakelen.
- Volg het artikel voor het instellen van Replicatie van inkomende gegevens.
- Verwijder na de cutover de Replicatie van inkomende gegevens configuratie.
- 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_timeoutparameter 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 TABLEgeen 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:
Stel de
max_allowed_packetparameterwaarde in op het maximum van 1073741824, wat 1 GB is. Deze waarde voorkomt overloopproblemen met betrekking tot lange rijen.Stel de parameters , , en tijdens de migratie in op UIT om eventuele overhead met betrekking tot
slow_query_loggeneral_logaudit_log_enabledquery_store_capture_modelogboekregistratie van query's te voorkomen.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.
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:
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.
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.
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_configurationopgeslagen 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)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_configurationtijdsduur. 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:
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_onlyvan 1, zodat schrijfgegevens niet worden verwerkt wanneer u een dump met gegevens vast legt.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.Sla deze waarden op om de replicatie vanaf uw Azure Database for MySQL starten.
Als u een dump van de gegevens wilt maken, voert
mysqldumpu 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:
Maak een Amazon MySQL-leesreplica met dezelfde configuratie als de bronserver. Maak daar vervolgens de dump.
Laat de Amazon RDS for MySQL-replica de bronreplica van Amazon RDS for MySQL lezen.
Wanneer de replicavertraging 0 is op de leesreplica, stopt u de replicatie door de opgeslagen
mysql.rds_stop_replicationprocedure aan te roepen.Mysql> call mysql.rds_stop_replication;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 STATUShet Exec_Master_Log_Pos veld.Sla deze waarden op om de replicatie vanaf uw Azure Database for MySQL starten.
Als u een dump wilt maken van de gegevens uit de leesreplica van Amazon RDS for MySQL, voert u
mysqldumpuit 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.
Bron- en replicaservers koppelen om de Replicatie van inkomende gegevens
Voer de volgende opdracht uit om de database te herstellen met behulp van systeemeigen mysql-herstel:
$ mysql -h <target_server> -u <targetuser> -p < dumpname.sqlNotitie
Als u in plaats daarvan myloader gebruikt, zie Grote databases migreren naar Azure Database for MySQL met mydumper/myloader.
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.
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>');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;Voer op de replicaserver de volgende opdracht uit om de status van de replicatie te controleren:
Mysql> show slave status\GAls de status van de parameters en Ja is, is de replicatie
Slave_IO_Runninggestart en wordt dezeSlave_SQL_Runninguitgevoerd.Controleer de waarde van de
Seconds_Behind_Masterparameter 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:
- Configureer de juiste aanmeldingen en machtigingen op databaseniveau in Azure Database for MySQL doelserver.
- Stop het schrijven naar de bronserver van Amazon RDS for MySQL.
- Zorg ervoor dat de doelserver Azure Database for MySQL de bronserver heeft ingeslagen en dat de waarde
Seconds_Behind_Master0 is vanshow slave status. - Roep de opgeslagen procedure aan om de replicatie te stoppen omdat alle wijzigingen
mysql.az_replication_stopzijn gerepliceerd naar de doelserver Azure Database for MySQL server. - Roep
mysql.az_replication_remove_masteraan om de configuratie Replicatie van inkomende gegevens verwijderen. - 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
- Zie voor meer informatie over het migreren van databases Azure Database for MySQL databasemigratiehandleiding.
- Bekijk de video MySQL/PostgreSQL-apps eenvoudig migreren naar beheerde Azure-service. Het bevat een demo over het migreren van MySQL-apps naar Azure Database for MySQL.