Sdílet prostřednictvím


Migrace Amazon RDS for MySQL do služby Azure Database for MySQL pomocí replikace příchozích dat

Poznámka:

Tento článek obsahuje odkazy na termín slave (podřízený) , což je termín, který už Microsoft nepoužívá. Když se termín odebere ze softwaru, odebereme ho z tohoto článku.

K migraci databází MySQL na flexibilní server Azure Database for MySQL můžete použít metody výpisu a obnovení, export a import aplikace MySQL Workbench nebo Azure Database Migration Service. Úlohy s minimálními výpadky můžete migrovat pomocí kombinace opensourcových nástrojů, jako jsou mysqldump nebo mydumper a myloader s replikací dat.

Replikace dat je technika, která replikuje změny dat ze zdrojového serveru na cílový server na základě metody umístění souboru binárního protokolu. V tomto scénáři instance MySQL, která funguje jako zdroj (na kterém pocházejí změny databáze), zapisuje aktualizace a změny jako události do binárního protokolu. Informace v binárním protokolu jsou uloženy v různých formátech protokolování podle zaznamenaných změn databáze. Repliky jsou nakonfigurované pro čtení binárního protokolu ze zdroje a spouštění událostí v binárním protokolu v místní databázi repliky.

Nastavte replikaci dat do flexibilního serveru Azure Database for MySQL pro synchronizaci dat ze zdrojového serveru MySQL na cílový server MySQL. Můžete provést selektivní přímou migraci aplikací z primární (nebo zdrojové databáze) na repliku (nebo cílovou databázi).

V tomto kurzu se dozvíte, jak nastavit replikaci dat mezi zdrojovým serverem, na kterém běží Amazon Relational Database Service (RDS) for MySQL, a cílovým serverem, na kterém běží flexibilní server Azure Database for MySQL.

Důležité informace o výkonu

Než začnete s tímto kurzem, zvažte dopad na výkon umístění a kapacitu klientského počítače, který použijete k provedení operace.

Umístění klienta

Proveďte operace výpisu nebo obnovení z klientského počítače, který je spuštěný ve stejném umístění jako databázový server:

  • U instancí flexibilního serveru Azure Database for MySQL by měl být klientský počítač ve stejné virtuální síti a zóně dostupnosti jako cílový databázový server.
  • U zdrojových instancí databáze Amazon RDS by měla existovat klientská instance ve stejném amazonovém virtuálním privátním cloudu a zóně dostupnosti jako zdrojový databázový server. V předchozím případě můžete přesunout soubory výpisu paměti mezi klientskými počítači pomocí protokolů pro přenos souborů, jako je FTP nebo SFTP, nebo je nahrát do služby Azure Blob Storage. Pokud chcete zkrátit celkovou dobu migrace, komprimujte soubory před jejich přenosem.

Kapacita klienta

Bez ohledu na to, kde se klientský počítač nachází, vyžaduje odpovídající výpočetní, vstupně-výstupní a síťovou kapacitu k provedení požadovaných operací. Obecná doporučení jsou:

  • Pokud výpis nebo obnovení zahrnuje zpracování dat v reálném čase, například komprese nebo dekomprese, zvolte třídu instance s alespoň jedním jádrem procesoru na výpis paměti nebo obnovovací vlákno.
  • Ujistěte se, že je pro instanci klienta k dispozici dostatek šířky pásma sítě. Použijte typy instancí, které podporují funkci akcelerovaných síťových služeb. Další informace najdete v části Akcelerované síťové služby v průvodci sítěmi virtuálních počítačů Azure.
  • Ujistěte se, že vrstva úložiště klientského počítače poskytuje očekávanou kapacitu čtení a zápisu. Doporučujeme použít virtuální počítač Azure s úložištěm SSD úrovně Premium.

Požadavky

Pro absolvování tohoto kurzu je potřeba provést následující:

  • Nainstalujte klienta mysqlclient do klientského počítače, abyste vytvořili výpis paměti a provedli operaci obnovení v cílové instanci flexibilního serveru Azure Database for MySQL.

  • U větších databází nainstalujte mydumper a myloader pro paralelní dumping a obnovení databází.

    Poznámka:

    Mydumper může běžet jenom v linuxových distribucích. Další informace naleznete v tématu Jak nainstalovat mydumper.

  • Vytvořte instanci flexibilního serveru Azure Database for MySQL, na kterém běží verze 5.7 nebo 8.0.

    Důležité

    Pokud je vaším cílem flexibilní server Azure Database for MySQL s zónově redundantní vysokou dostupností (HA), mějte na paměti, že pro tuto konfiguraci není podporovaná replikace příchozích dat. Jako alternativní řešení můžete během vytváření serveru nastavit zónově redundantní vysokou dostupnost:

    1. Vytvořte server s povolenou zónově redundantní vysokou dostupností.
    2. Zakažte vysokou dostupnost.
    3. Postupujte podle článku a nastavte replikaci příchozích dat.
    4. Po přímé migraci odeberte konfiguraci replikace příchozích dat.
    5. Povolte vysokou dostupnost.

Ujistěte se, že je správně nakonfigurovaných a nastavených několik parametrů a funkcí, jak je popsáno níže:

  • Z důvodů kompatibility mají zdrojové a cílové databázové servery ve stejné verzi MySQL.
  • V každé tabulce je primární klíč. Nedostatek primárních klíčů v tabulkách může zpomalit proces replikace.
  • Ujistěte se, že znaková sada zdroje a cílové databáze jsou stejné.
  • wait_timeout Nastavte parametr na rozumnou dobu. Doba závisí na množství dat nebo úlohách, které chcete importovat nebo migrovat.
  • Ověřte, že všechny tabulky používají InnoDB. Flexibilní server Azure Database for MySQL podporuje pouze modul úložiště InnoDB.
  • U tabulek s mnoha sekundárními indexy nebo velkými tabulkami se během obnovení zobrazí režijní náklady na výkon. Upravte soubory výpisu paměti tak, aby CREATE TABLE příkazy nezahrnuly definice sekundárního klíče. Po importudatchch

Nakonec se připravte na replikaci příchozích dat:

  • Ověřte, že se cílová instance flexibilního serveru Azure Database for MySQL může připojit ke zdrojovému serveru Amazon RDS for MySQL přes port 3306.
  • Ujistěte se, že zdrojový server Amazon RDS for MySQL umožňuje příchozí i odchozí provoz na portu 3306.
  • Ujistěte se, že ke zdrojovému serveru poskytujete připojení typu site-to-site pomocí služby Azure ExpressRoute nebo služby Azure VPN Gateway. Další informace o vytvoření virtuální sítě najdete v dokumentaci ke službě Azure Virtual Network. Podívejte se také na články rychlého startu s podrobnými podrobnostmi.
  • Nakonfigurujte skupiny zabezpečení sítě zdrojového databázového serveru tak, aby umožňovaly cílovou IP adresu flexibilního serveru Azure Database for MySQL.

Důležité

Pokud je zdrojová instance Amazon RDS for MySQL GTID_mode nastavená na zapnuto, musí mít cílová instance flexibilního serveru Azure Database for MySQL také GTID_mode nastavená na ZAPNUTO.

Konfigurace cílové instance Služby Azure Database for MySQL

Konfigurace cílové instance flexibilního serveru Azure Database for MySQL, což je cíl replikace příchozích dat:

  1. Nastavte hodnotu parametru max_allowed_packet na maximum 1073741824, což je 1 GB. Tato hodnota zabraňuje jakýmkoli problémům s přetečením souvisejícím s dlouhými řádky.

  2. Během migrace nastavte slow_query_loghodnotu , general_log, audit_log_enableda query_store_capture_mode parametry na hodnotu OFF , aby se eliminovaly veškeré režijní náklady související s protokolováním dotazů.

  3. Vertikálně navyšte kapacitu výpočetních prostředků cílové instance flexibilního serveru Azure Database for MySQL na maximálně 64 virtuálních jader. Tato velikost poskytuje více výpočetních prostředků při obnovování výpisu paměti databáze zdrojového serveru.

    Po dokončení migrace můžete kdykoli škálovat výpočetní prostředky tak, aby splňovaly požadavky vaší aplikace.

  4. Vertikálně navyšte kapacitu úložiště, abyste během migrace získali více IOPS, nebo zvyšte maximální počet IOPS migrace.

    Poznámka:

    Maximální počet vstupně-výstupních operací za sekundu je určený velikostí výpočetních prostředků. Další informace najdete v části IOPS v možnostech výpočetních prostředků a úložiště na flexibilním serveru Azure Database for MySQL.

Konfigurace zdrojového serveru Amazon RDS for MySQL

Příprava a konfigurace serveru MySQL hostovaného v Amazon RDS, což je zdroj pro replikaci dat:

  1. Ověřte, že je na zdrojovém serveru Amazon RDS for MySQL povolené binární protokolování. Zkontrolujte, jestli jsou povolené automatizované zálohy, nebo se ujistěte, že pro zdrojový server Amazon RDS for MySQL existuje replika pro čtení.

  2. Ujistěte se, že jsou binární soubory protokolu na zdrojovém serveru zachovány, dokud se změny nepoužije na cílové instanci flexibilního serveru Azure Database for MySQL.

    Flexibilní server Azure Database for MySQL při replikaci dat nespravuje proces replikace.

  3. Pokud chcete zkontrolovat uchovávání binárního protokolu na zdrojovém serveru Amazon RDS a zjistit počet hodin, po které se binární protokoly uchovávají, zavolejte uloženou proceduru mysql.rds_show_configuration :

    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. Pokud chcete nakonfigurovat dobu uchovávání binárních protokolů, spusťte uloženou rds_set_configuration proceduru a ujistěte se, že se binární protokoly uchovávají na zdrojovém serveru po požadovanou dobu. Příklad:

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

    Pokud vytváříte výpis a obnovujete, předchozí příkaz vám pomůže rychle sehnat rozdílové změny.

    Poznámka:

    Zajistěte, aby se na zdrojovém serveru na základě definované doby uchovávání uložily binární protokoly na více místa na disku.

Existují dva způsoby zachycení výpisu dat ze zdrojového serveru Amazon RDS for MySQL. Jedním z přístupů je zachycení výpisu dat přímo ze zdrojového serveru. Druhý přístup zahrnuje zachycení výpisu z repliky pro čtení Amazon RDS for MySQL.

  • Zachycení výpisu dat přímo ze zdrojového serveru:

    1. Ujistěte se, že zastavte zápisy z aplikace několik minut, abyste získali transakční konzistentní výpis dat.

      Parametr můžete také dočasně nastavit read_only na hodnotu 1 , aby se při zachytávání výpisu dat nezpracovály zápisy.

    2. Po zastavení zápisů na zdrojovém serveru shromážděte název souboru binárního protokolu a posun spuštěním příkazu Mysql> Show master status;.

    3. Uložte tyto hodnoty, abyste mohli spustit replikaci z instance flexibilního serveru Azure Database for MySQL.

    4. Pokud chcete vytvořit výpis dat, spusťte mysqldump následující příkaz:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Pokud zastavení zápisů na zdrojovém serveru není možnost nebo výkon dumpingových dat není na zdrojovém serveru přijatelný, zachyťte výpis paměti na serveru repliky:

    1. Vytvořte repliku pro čtení Amazon MySQL se stejnou konfigurací jako zdrojový server. Pak tam vytvořte výpis paměti.

    2. Nechte repliku pro čtení Amazon RDS for MySQL dohnat se zdrojovým serverem Amazon RDS for MySQL.

    3. Když prodleva repliky dosáhne 0 repliky pro čtení, zastavte replikaci voláním uložené procedury mysql.rds_stop_replication.

      call mysql.rds_stop_replication;
      
    4. Když je replikace zastavená, připojte se k replice. Potom spusťte SHOW SLAVE STATUS příkaz, který načte aktuální název souboru binárního protokolu z pole Relay_Master_Log_File a umístění souboru protokolu z pole Exec_Master_Log_Pos .

    5. Uložte tyto hodnoty, abyste mohli spustit replikaci z instance flexibilního serveru Azure Database for MySQL.

    6. Pokud chcete vytvořit výpis dat z repliky pro čtení Amazon RDS for MySQL, spusťte mysqldump následující příkaz:

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

    Poznámka:

    Mydumper můžete použít také k zachycení paralelizovaného výpisu dat ze zdrojové databáze Amazon RDS for MySQL. Další informace najdete v tématu Migrace velkých databází na flexibilní server Azure Database for MySQL pomocí nástroje mydumper/myloader.

  1. Pokud chcete obnovit databázi pomocí nativního obnovení mysql, spusťte následující příkaz:

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

    Poznámka:

    Pokud místo toho používáte zavaděč, přečtěte si téma Migrace velkých databází na flexibilní server Azure Database for MySQL pomocí nástroje mydumper/myloader.

  2. Přihlaste se ke zdrojovému serveru Amazon RDS for MySQL a nastavte uživatele replikace. Potom tomuto uživateli udělte potřebná oprávnění.

    • Pokud používáte SSL, spusťte následující příkazy:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL;
      SHOW GRANTS FOR syncuser@'%';
      
    • Pokud nepoužíváte PROTOKOL SSL, spusťte následující příkazy:

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

    Uložené procedury dělají všechny funkce replikace příchozích dat. Informace o všech procedurách naleznete v tématu Uložené procedury replikace příchozích dat. Tyto uložené procedury můžete spustit v prostředí MySQL nebo MySQL Workbench.

  3. Pokud chcete propojit zdrojový server Amazon RDS for MySQL a cílový server flexibilního serveru Azure Database for MySQL, přihlaste se k cílové instanci flexibilního serveru Azure Database for MySQL. Nastavte server Amazon RDS for MySQL jako zdrojový server spuštěním následujícího příkazu:

    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. Pokud chcete spustit replikaci mezi zdrojovým serverem Amazon RDS for MySQL a cílovou instancí flexibilního serveru Azure Database for MySQL, spusťte následující příkaz:

    CALL mysql.az_replication_start;
    
  5. Pokud chcete zkontrolovat stav replikace na serveru repliky, spusťte následující příkaz:

    show slave status\G
    

    Pokud je stav Slave_IO_Running a Slave_SQL_Running parametry Ano, replikace se spustila a je ve spuštěném stavu.

  6. Zkontrolujte hodnotu parametru Seconds_Behind_Master a zjistěte, jak zpožděný cílový server je.

    Pokud je hodnota 0, cíl zpracoval všechny aktualizace ze zdrojového serveru. Pokud je hodnota jiná než 0, cílový server stále zpracovává aktualizace.

Zajištění úspěšné přímé migrace

Zajištění úspěšné přímé migrace:

  1. Nakonfigurujte příslušná přihlášení a oprávnění na úrovni databáze v cílové instanci flexibilního serveru Azure Database for MySQL.
  2. Zastavte zápisy do zdrojového serveru Amazon RDS for MySQL.
  3. Ujistěte se, že cílová instance flexibilního serveru Azure Database for MySQL zachytila zdrojový server a že Seconds_Behind_Master hodnota je 0 z show slave status.
  4. Voláním uložené procedury mysql.az_replication_stop zastavíte replikaci, protože všechny změny byly replikovány do cílové instance flexibilního serveru Azure Database for MySQL.
  5. Volání mysql.az_replication_remove_master pro odebrání konfigurace replikace příchozích dat
  6. Přesměrujte klienty a klientské aplikace na cílovou instanci flexibilního serveru Azure Database for MySQL.

V tomto okamžiku je migrace dokončena. Vaše aplikace jsou připojené k serveru s flexibilním serverem Azure Database for MySQL.