Migrace Amazon VP pro MySQL do Azure Database for MySQL pomocí Replikace vstupních dat

platí pro: Azure Database for MySQL – jeden server Azure Database for MySQL – flexibilní Server

Poznámka

Tento článek obsahuje odkazy na podřízený termín, termín, který už Microsoft nepoužívá. Po odebrání termínu ze softwaru ho odebereme z tohoto článku.

Můžete použít metody, jako jsou výpisy MySQL a obnovení, MySQL Workbench export a import nebo Azure Database Migration Service k migraci databází MySQL do Azure Database for MySQL. Pomocí kombinace open source nástrojů, jako je mysqldump nebo mydumper a Replikace vstupních dat myloader, můžete migrovat úlohy s minimálními výpadky.

Replikace vstupních 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 zapisuje instance MySQL, která funguje jako zdroj (na kterém se databáze mění), 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í v závislosti na zaznamenaných změnách databáze. Repliky jsou nakonfigurované tak, aby přečetly binární protokol ze zdroje a spustily události v binárním protokolu místní databáze repliky.

Pokud nastavíte replikace vstupních dat k synchronizaci dat ze zdrojového serveru MySQL na cílový server MySQL, můžete provést selektivní přímou migraci vašich aplikací z primární (nebo zdrojové databáze) do repliky (nebo cílové databáze).

V tomto kurzu se naučíte, jak nastavit Replikace vstupních dat mezi zdrojovým serverem, na kterém běží služba Amazon relační databáze (RDS) pro MySQL, a cílovým serverem, na kterém běží Azure Database for MySQL.

Otázky výkonu

Než začnete s tímto kurzem, vezměte v úvahu dopad na výkon umístění a kapacity klientského počítače, který budete používat k provedení této operace.

Umístění klienta

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

  • U Azure Database for MySQLch serverů musí být klientský počítač ve stejné virtuální síti a stejné zóně dostupnosti jako cílový databázový server.
  • Pro zdrojové instance databáze Amazon RDS by instance klienta měla existovat ve stejném virtuálním privátním cloudu Amazon a zóně dostupnosti jako zdrojový databázový server. V předchozím případě můžete přesunout soubory s výpisem paměti mezi klientskými počítači pomocí protokolů přenosu souborů, jako je FTP nebo SFTP, nebo jejich nahrání do Azure Blob Storage. Chcete-li zkrátit celkovou dobu migrace, Zkomprimujte soubory před jejich přenosem.

Kapacita klienta

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

  • Pokud výpis nebo obnovení zahrnuje zpracování dat v reálném čase, například kompresi nebo dekomprese, vyberte třídu instance s alespoň jedním jádrem procesoru na výpis nebo obnovení vlákna.
  • Zajistěte, aby byla k dispozici dostatečná šířka pásma sítě pro instanci klienta. Používejte typy instancí, které podporují funkci akcelerované sítě. Další informace najdete v části "urychlené sítě" v tématu Průvodce sítí virtuálních počítačů Azure.
  • Zajistěte, aby vrstva úložiště klientského počítače poskytovala očekávanou kapacitu pro čtení a zápis. 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 do klientského počítače mysqlclient a vytvořte výpis paměti a proveďte operaci obnovení na cílovém Azure Database for MySQL serveru.

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

    Poznámka

    Mydumper lze spustit pouze v distribucích systému Linux. Další informace najdete v tématu Postup instalace mydumper.

  • Vytvořte instanci Azure Database for MySQL serveru, na kterém běží verze 5,7 nebo 8,0.

    Důležité

    Pokud je váš cíl Azure Database for MySQL flexibilní Server s vysokou dostupností zóny (HA), Upozorňujeme, že Replikace vstupních dat není pro tuto konfiguraci podporováno. Alternativním řešením je, že při vytváření serveru se nastavila nadbytečná dostupnost zóny:

    1. Vytvořte server s povoleným neredundantním HA zóny.
    2. Zakažte HA.
    3. Podle článku nastavte Replikace vstupních dat.
    4. Po přímou migraci odeberte konfiguraci Replikace vstupních dat.
    5. Povolte HA.

Zajistěte, aby byly správně nakonfigurovány a nastaveny některé parametry a funkce, jak je popsáno níže:

  • Z důvodu kompatibility mají zdrojové a cílové databázové servery na stejné verzi MySQL.
  • Mít primární klíč v každé tabulce. Nedostatek primárních klíčů v tabulkách může zpomalit proces replikace.
  • Ujistěte se, že znaková sada zdrojové a cílové databáze je stejná.
  • Nastavte wait_timeout parametr na rozumnou dobu. Čas závisí na množství dat nebo zatížení, které chcete importovat nebo migrovat.
  • Ověřte, že všechny tabulky používají InnoDB. Server Azure Database for MySQL podporuje jenom modul úložiště InnoDB.
  • Pro tabulky s velkým počtem sekundárních indexů nebo pro tabulky, které jsou velké, se během obnovování projeví i vliv režie výkonu. Upravte soubory s výpisem paměti tak, aby CREATE TABLE příkazy neobsahovaly definice sekundárního klíče. Po importu dat znovu vytvořte sekundární indexy, aby se zabránilo snížení výkonu během procesu obnovení.

Nakonec pro přípravu na Replikace vstupních dat:

  • Ověřte, že cílový Azure Database for MySQL server se může připojit ke zdroji Amazon RDS pro MySQL server přes port 3306.
  • Ujistěte se, že zdroj Amazon RDS pro MySQL server umožňuje příchozí i odchozí provoz na portu 3306.
  • Ujistěte se, že zadáváte připojení Site-to-site k vašemu zdrojovému serveru pomocí Azure ExpressRoute nebo Azure VPN Gateway. Další informace o vytváření virtuálních sítí najdete v dokumentaci k Azure Virtual Network. Přečtěte si také článek rychlý Start s podrobnými podrobnostmi.
  • Nakonfigurujte skupiny zabezpečení sítě zdrojového databázového serveru tak, aby umožňovaly IP adresu serveru cílové Azure Database for MySQL.

Důležité

Pokud má instance zdroje Amazon RDS for MySQL GTID_mode nastavenou na ZAPNUTo, musí mít cílová instance Azure Database for MySQL flexibilního serveru taky GTID_mode nastavené na ZAPNUTo.

Konfigurace cílové instance Azure Database for MySQL

Konfigurace cílové instance Azure Database for MySQL, což je cíl pro Replikace vstupních dat:

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

  2. Nastavením slow_query_log parametrů,, a v průběhu migrace nastavíte, general_log aby se audit_log_enabled query_store_capture_mode vyloučila veškerá režie související s protokolováním dotazů.

  3. Škálovat výpočetní velikost cílového Azure Database for MySQL serveru na maximum 64 virtuální jádra. Tato velikost poskytuje další výpočetní prostředky při obnovení výpisu databáze ze zdrojového serveru.

    Až se migrace dokončí, můžete je kdykoli škálovat zpátky, aby splňovala požadavky vaší aplikace.

  4. Horizontální navýšení kapacity úložiště vám umožní získat během migrace více IOPS nebo zvýšit maximální IOPS pro migraci.

    Poznámka

    K dispozici je maximální počet IOPS stanovený výpočetní velikostí. Další informace najdete v části IOPS v tématu Možnosti výpočtů a úložiště v Azure Database for MySQL-flexibilním serveru.

Konfigurace zdroje Amazon RDS pro MySQL server

Příprava a konfigurace serveru MySQL hostovaného v Amazon RDS, který je zdrojem pro replikace vstupních dat:

  1. Potvrďte, že je na zdrojovém serveru Amazon RDS for MySQL povolené binární protokolování. Zkontrolujte, zda jsou povoleny automatické zálohy, nebo zajistěte, aby pro zdrojový server Amazon RDS for MySQL existovala replika pro čtení.

  2. Zajistěte, aby byly soubory binárního protokolu na zdrojovém serveru uchovány až po použití změn v cílové instanci Azure Database for MySQL.

    V případě Replikace vstupních dat Azure Database for MySQL nespravuje proces replikace.

  3. Chcete-li ověřit uchovávání binárních protokolů na zdrojovém serveru Amazon RDS, aby bylo možné určit počet hodin, po které se binární protokoly uchovávají, zavolejte mysql.rds_show_configuration uloženou proceduru:

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

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

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

    Poznámka

    Zajistěte dostatek místa na disku pro uložení binárních protokolů na zdrojovém serveru na základě definované doby uchování.

Existují dva způsoby, jak zachytit výpis dat ze zdrojového serveru Amazon RDS for MySQL. Jeden z přístupů zahrnuje zachycení výpisu dat přímo ze zdrojového serveru. Druhý postup zahrnuje zachycení výpisu z repliky pro čtení Amazon RDS for MySQL.

  • Chcete-li zachytit výpis dat přímo ze zdrojového serveru:

    1. Zajistěte, aby se zápisy z aplikace po několik minut zastavily, a získali tak reakční konzistentní výpis dat.

      Můžete také dočasně nastavit read_only parametr na hodnotu 1 , aby se zápisy nezpracovaly při záznamu výpisu dat.

    2. Po zastavení zápisu na zdrojovém serveru Shromážděte pomocí příkazu příkaz a posun binárního souboru protokolu Mysql> Show master status; .

    3. Uložte tyto hodnoty a spusťte replikaci ze serveru Azure Database for MySQL.

    4. Chcete-li vytvořit výpis dat, spusťte mysqldump spuštěním následujícího příkazu:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Pokud zastavování zápisů na zdrojovém serveru není možnost nebo není na zdrojovém serveru přijatelné žádné z nich, Zachyťte výpis na serveru repliky:

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

    2. Umožněte, aby se replika pro čtení Amazon RDS for MySQL nachytila se zdrojovým serverem Amazon RDS pro MySQL.

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

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

    5. Uložte tyto hodnoty a spusťte replikaci ze serveru Azure Database for MySQL.

    6. Chcete-li vytvořit výpis dat z repliky pro čtení z 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é pro zachycení paralelního výpisu dat ze zdrojové databáze Amazon RDS pro MySQL. Další informace najdete v tématu migrace velkých databází do Azure Database for MySQL pomocí mydumper/myloader.

  1. Chcete-li 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 myloader, přečtěte si téma migrace velkých databází do Azure Database for MySQL pomocí mydumper/myloader.

  2. Přihlaste se ke zdroji Amazon RDS pro MySQL server a nastavte uživatele replikace. Pak tomuto uživateli udělte potřebná oprávnění.

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

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

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

    Všechny funkce Replikace vstupních dat jsou prováděny uloženými procedurami. Informace o všech postupech najdete v tématu replikace vstupních dat uložených procedur. 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 Azure Database for MySQL, přihlaste se k cílovému Azure Database for MySQL serveru. Spusťte následující příkaz a nastavte Server Amazon RDS for MySQL jako zdrojový Server:

    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 zdrojem Amazon RDS pro MySQL a cílovým serverem Azure Database for MySQL, spusťte následující příkaz:

    Mysql> CALL mysql.az_replication_start;
    
  5. Stav replikace zkontrolujete tak, že na serveru repliky spustíte následující příkaz:

    Mysql> show slave status\G
    

    Pokud Slave_IO_Running Slave_SQL_Running je stav parametrů a Ano, replikace byla spuštěna a je ve spuštěném stavu.

  6. Ověřte hodnotu Seconds_Behind_Master parametru a určete, jak má být cílový server zpožděn.

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

Zajištění úspěšného přímou migraci

Zajištění úspěšného přímou migraci:

  1. Nakonfigurujte příslušná přihlášení a oprávnění na úrovni databáze v cílovém serveru Azure Database for MySQL.
  2. Zastavte zápis na zdrojový server Amazon RDS pro MySQL.
  3. Zajistěte, aby se cílový Azure Database for MySQL server zachytil se zdrojovým serverem a aby byla Seconds_Behind_Master hodnota 0 z show slave status .
  4. Pro zastavení replikace zavolejte uloženou proceduru, mysql.az_replication_stop protože všechny změny byly replikovány do cílového Azure Database for MySQL serveru.
  5. Voláním mysql.az_replication_remove_master pro odebrání konfigurace replikace vstupních dat.
  6. Přesměrujte klienty a klientské aplikace na cílový server Azure Database for MySQL.

V tuto chvíli je migrace dokončená. Vaše aplikace jsou připojené k serveru se systémem Azure Database for MySQL.

Další kroky