Megosztás a következőn keresztül:


Az Amazon RDS for MySQL migrálása az Azure Database for MySQL-be adatbeemezési replikáció használatával

Feljegyzés

Ebben a cikkben szerepel a slave (alárendelt) kifejezés, amelyet a Microsoft már nem használ. Ha a kifejezés el lesz távolítva a szoftverből, eltávolítjuk ebből a cikkből.

A MySQL-adatbázisok rugalmas Azure Database for MySQL-kiszolgálóra való migrálásához használhat olyan módszereket, mint a MySQL-memóriakép és -visszaállítás, a MySQL Workbench Exportálás és importálás vagy az Azure Database Migration Service. A számítási feladatokat minimális állásidővel migrálhatja olyan nyílt forráskódú eszközökkel, mint a mysqldump, a mydumper és a myloader a Data-in Replikációval.

Az adatbetöltési replikáció egy olyan technika, amely a bináris naplófájlok helymeghatározási módszere alapján replikálja a forráskiszolgálóról a célkiszolgálóra az adatváltozásokat. Ebben a forgatókönyvben a forrásként működő MySQL-példány (amelyről az adatbázis módosul) a bináris naplóba eseményekként írja a frissítéseket és a módosításokat. A bináris napló információi a rögzített adatbázis-módosításoknak megfelelően különböző naplózási formátumokban lesznek tárolva. A replikák úgy vannak konfigurálva, hogy beolvassák a bináris naplót a forrásból, és végrehajtsák az eseményeket a bináris naplóban a replika helyi adatbázisában.

Állítsa be az Adatok replikálása az Azure Database for MySQL-be – rugalmas kiszolgálóra az adatok forrás MySQL-kiszolgálóról egy cél MySQL-kiszolgálóra való szinkronizálásához. Az alkalmazások szelektív átállását az elsődleges (vagy a forrásadatbázis) és a replika (vagy a céladatbázis) között végezheti el.

Ebben az oktatóanyagban megtudhatja, hogyan állíthat be adatreplikációt a MySQL-hez készült Amazon Relational Database Service -t (RDS) futtató forráskiszolgáló és egy rugalmas Azure Database for MySQL-kiszolgálót futtató célkiszolgáló között.

A teljesítménnyel kapcsolatos megfontolások

Az oktatóanyag megkezdése előtt vegye figyelembe a művelet végrehajtásához használni kívánt ügyfélszámítógép helyének és kapacitásának teljesítménybeli következményeit.

Ügyfél helye

Memóriakép- vagy visszaállítási műveleteket hajthat végre egy olyan ügyfélszámítógépről, amely az adatbázis-kiszolgálóval azonos helyen van elindítva:

  • Rugalmas Azure Database for MySQL-kiszolgálópéldányok esetén az ügyfélszámítógépnek ugyanabban a virtuális hálózatban és rendelkezésre állási zónában kell lennie, mint a céladatbázis-kiszolgáló.
  • A forrás Amazon RDS-adatbázispéldányok esetében az ügyfélpéldánynak ugyanabban az Amazon virtuális magánfelhőben és rendelkezésre állási zónában kell lennie, mint a forrásadatbázis-kiszolgálónak. Az előző esetben áthelyezheti a memóriaképfájlokat az ügyfélgépek között fájlátviteli protokollok, például FTP vagy SFTP használatával, vagy feltöltheti őket az Azure Blob Storage-ba. A teljes áttelepítési idő csökkentése érdekében tömörítse a fájlokat az átvitel előtt.

Ügyfélkapacitás

Függetlenül attól, hogy az ügyfélszámítógép hol található, a kért műveletek elvégzéséhez megfelelő számítástechnikai, I/O- és hálózati kapacitásra van szükség. Az általános javaslatok a következők:

  • Ha a memóriakép vagy visszaállítás az adatok valós idejű feldolgozását, például tömörítést vagy tömörítést igényel, válasszon ki egy példányosztályt, amely memóriaképenként vagy visszaállítási szálonként legalább egy processzormaggal rendelkezik.
  • Győződjön meg arról, hogy elegendő hálózati sávszélesség áll rendelkezésre az ügyfélpéldány számára. A gyorsított hálózatkezelési funkciót támogató példánytípusok használata. További információ: "Gyorsított hálózatkezelés" szakasz az Azure-beli virtuális gépek hálózatkezelési útmutatójában.
  • Győződjön meg arról, hogy az ügyfélszámítógép tárolási rétege biztosítja a várt olvasási/írási kapacitást. Javasoljuk, hogy prémium SSD-tárterülettel rendelkező Azure-beli virtuális gépet használjon.

Előfeltételek

Az oktatóanyag elvégzéséhez a következőkre lesz szüksége:

  • Telepítse a mysqlclientet az ügyfélszámítógépre egy memóriakép létrehozásához, és végezzen visszaállítási műveletet a célként megadott rugalmas Azure Database for MySQL-kiszolgálópéldányon.

  • Nagyobb adatbázisok esetén telepítse a mydumpert és a myloadert az adatbázisok párhuzamos memóriaképezéséhez és visszaállításához.

    Feljegyzés

    A Mydumper csak Linux-disztribúciókon futtatható. További információ: A mydumper telepítése.

  • Hozzon létre egy rugalmas Azure Database for MySQL-kiszolgálót, amely az 5.7-es vagy a 8.0-s verziót futtatja.

    Fontos

    Ha a cél a rugalmas Azure Database for MySQL-kiszolgáló zónaredundáns magas rendelkezésre állással (HA), vegye figyelembe, hogy a data-in replikáció ebben a konfigurációban nem támogatott. Megkerülő megoldásként a kiszolgáló létrehozása során állítsa be a zónaredundáns HA-t:

    1. Hozza létre a kiszolgálót zónaredundáns ha engedélyezve.
    2. Tiltsa le a HA-t.
    3. Kövesse a cikket a data-in replikáció beállításához.
    4. Az átállás után távolítsa el a data-in replikációs konfigurációt.
    5. Engedélyezze a HA-t.

Győződjön meg arról, hogy számos paraméter és szolgáltatás megfelelően van konfigurálva és konfigurálva az alábbiak szerint:

  • Kompatibilitási okokból a forrás- és céladatbázis-kiszolgálók ugyanazon a MySQL-verzión találhatók.
  • Minden táblában legyen egy elsődleges kulcs. A táblák elsődleges kulcsainak hiánya lelassíthatja a replikációs folyamatot.
  • Győződjön meg arról, hogy a forrás és a céladatbázis karakterkészlete megegyezik.
  • Állítsa be a wait_timeout paramétert ésszerű időre. Az idő az importálni vagy migrálni kívánt adatok vagy számítási feladatok mennyiségétől függ.
  • Ellenőrizze, hogy az összes tábla innoDB-t használ-e. A rugalmas Azure Database for MySQL-kiszolgáló csak az InnoDB-tárolómotort támogatja.
  • A sok másodlagos indexet vagy nagy táblázatot tartalmazó táblák esetében a visszaállítás során a teljesítményterhelési hatások láthatók. Módosítsa a memóriaképfájlokat, hogy az CREATE TABLE utasítások ne tartalmazzanak másodlagos kulcsdefiníciókat. Az adatok importálása után hozzon létre újra másodlagos indexeket a visszaállítási folyamat teljesítménybeli büntetésének elkerülése érdekében.

Végül a data-in replikációra való felkészüléshez:

  • Ellenőrizze, hogy a cél Azure Database for MySQL-kiszolgálópéldány képes-e csatlakozni a forrás Amazon RDS for MySQL-kiszolgálóhoz a 3306-os porton keresztül.
  • Győződjön meg arról, hogy a forrás Amazon RDS for MySQL-kiszolgáló engedélyezi a bejövő és a kimenő forgalmat a 3306-os porton.
  • Győződjön meg arról, hogy helyek közötti kapcsolatot biztosít a forráskiszolgálóhoz az Azure ExpressRoute vagy az Azure VPN Gateway használatával. A virtuális hálózat létrehozásával kapcsolatos további információkért tekintse meg az Azure Virtual Network dokumentációját. Tekintse meg a rövid útmutatókat, amelyek részletes információkat is tartalmaznak.
  • Konfigurálja a forrásadatbázis-kiszolgáló hálózati biztonsági csoportjait a rugalmas Azure Database for MySQL-kiszolgáló IP-címének engedélyezéséhez.

Fontos

Ha a forrás Amazon RDS for MySQL-példány GTID_mode ON értékre van állítva, akkor a rugalmas Azure Database for MySQL-kiszolgáló célpéldányának is be kell GTID_mode állítania.

Az Azure Database for MySQL célpéldányának konfigurálása

A rugalmas Azure Database for MySQL-kiszolgáló célpéldányának konfigurálása, amely a data-in replikáció célpéldánya:

  1. Állítsa a max_allowed_packet paraméter értékét az 1 GB-os 1073741824 maximális értékre. Ez az érték megakadályozza a hosszú sorokkal kapcsolatos túlcsordulási problémákat.

  2. Állítsa a slow_query_log, general_log, , audit_log_enabledés query_store_capture_mode paramétereket KI értékre a migrálás során, hogy kiküszöbölje a lekérdezésnaplózással kapcsolatos többletterhelést.

  3. Skálázza fel a rugalmas Azure Database for MySQL-kiszolgáló célpéldányának számítási méretét legfeljebb 64 virtuális magra. Ez a méret több számítási erőforrást biztosít a forráskiszolgáló adatbázis-memóriaképének visszaállításakor.

    A migrálás befejezése után bármikor visszaskálázhatja a számítást, hogy megfeleljen az alkalmazás igényeinek.

  4. Skálázza fel a tárterület méretét, hogy több IOPS-t kapjon az áttelepítés során, vagy növelje az áttelepítés maximális IOPS-értékét.

    Feljegyzés

    A rendelkezésre álló maximális IOPS-t a számítási méret határozza meg. További információ: A rugalmas Azure Database for MySQL-kiszolgáló számítási és tárolási lehetőségeinek IOPS-szakasza.

A forrás Amazon RDS for MySQL-kiszolgáló konfigurálása

Az Amazon RDS-ben üzemeltetett MySQL-kiszolgáló előkészítése és konfigurálása, amely a data-in replikáció forrása :

  1. Győződjön meg arról, hogy a bináris naplózás engedélyezve van a forrás Amazon RDS for MySQL-kiszolgálón. Ellenőrizze, hogy engedélyezve vannak-e az automatikus biztonsági mentések, vagy hogy létezik-e olvasási replika a forrás Amazon RDS for MySQL-kiszolgálóhoz.

  2. Győződjön meg arról, hogy a bináris naplófájlok a forráskiszolgálón mindaddig megmaradnak, amíg a módosítások a rugalmas Azure Database for MySQL-kiszolgáló célpéldányán nem lesznek alkalmazva.

    A data-in replikációval a rugalmas Azure Database for MySQL-kiszolgáló nem kezeli a replikációs folyamatot.

  3. Ha ellenőrizni szeretné a bináris naplók megőrzését a forrás Amazon RDS-kiszolgálón a bináris naplók megőrzésének időtartamának meghatározásához, hívja meg a mysql.rds_show_configuration tárolt eljárást:

    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. A bináris naplók megőrzési idejének konfigurálásához futtassa a rds_set_configuration tárolt eljárást, hogy a bináris naplók a kívánt ideig megmaradjanak a forráskiszolgálón. Példa:

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

    Ha memóriaképet hoz létre és állít vissza, az előző parancs segítségével gyorsan utolérheti a változásváltozásokat.

    Feljegyzés

    Győződjön meg arról, hogy elegendő lemezterületet biztosít a bináris naplók forráskiszolgálón való tárolásához a megadott megőrzési idő alapján.

A forrás Amazon RDS for MySQL-kiszolgálóról kétféleképpen rögzíthet adatképet. Az egyik módszer az adatok memóriaképének rögzítése közvetlenül a forráskiszolgálóról. A másik megközelítés magában foglalja egy memóriakép rögzítését egy Amazon RDS for MySQL olvasási replikából.

  • Adatok memóriaképének rögzítése közvetlenül a forráskiszolgálóról:

    1. Győződjön meg arról, hogy néhány percre leállítja az írásokat az alkalmazásból, hogy tranzakciósan konzisztens adatképet kapjon.

      A paramétert ideiglenesen 1 értékre is beállíthatjaread_only, hogy az írások ne dolgozzanak fel adatképek rögzítésekor.

    2. Miután leállítja az írásokat a forráskiszolgálón, gyűjtse össze a bináris naplófájl nevét, majd a parancs Mysql> Show master status;futtatásával eltolást.

    3. Mentse ezeket az értékeket a rugalmas Azure Database for MySQL-kiszolgálópéldány replikációjának elindításához.

    4. Az adatok memóriaképének létrehozásához hajtsa végre mysqldump a következő parancs futtatásával:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Ha az írások leállítása nem lehetséges a forráskiszolgálón, vagy a memóriaképek teljesítménye nem elfogadható a forráskiszolgálón, rögzítsen egy memóriaképet egy replikakiszolgálón:

    1. Hozzon létre egy Amazon MySQL olvasási replikát a forráskiszolgálóval megegyező konfigurációval. Ezután hozza létre a memóriaképet.

    2. Az Amazon RDS for MySQL olvasási replika felzárkózhat a forrás Amazon RDS for MySQL-kiszolgálóhoz.

    3. Amikor a replika késése eléri a 0 értéket az olvasási replikán, állítsa le a replikációt a tárolt eljárás mysql.rds_stop_replicationmeghívásával.

      call mysql.rds_stop_replication;
      
    4. A replikáció leállítása után csatlakozzon a replikához. Ezután futtassa a SHOW SLAVE STATUS parancsot az aktuális bináris naplófájl nevének lekéréséhez a Relay_Master_Log_File mezőből és a naplófájl pozíciójából a Exec_Master_Log_Pos mezőből.

    5. Mentse ezeket az értékeket a rugalmas Azure Database for MySQL-kiszolgálópéldány replikációjának elindításához.

    6. Az Amazon RDS for MySQL olvasási replika adatainak memóriaképének létrehozásához hajtsa végre mysqldump a következő parancs futtatásával:

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

    Feljegyzés

    Használhatja a mydumpert is az adatok párhuzamos memóriaképének rögzítéséhez a forrás Amazon RDS for MySQL-adatbázisból. További információ: Nagyméretű adatbázisok migrálása rugalmas Azure Database for MySQL-kiszolgálóra mydumper/myloader használatával.

  1. Ha natív mysql-visszaállítással szeretné visszaállítani az adatbázist, futtassa a következő parancsot:

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

    Feljegyzés

    Ha inkább a myloadert használja, olvassa el a nagyméretű adatbázisok migrálása rugalmas Azure Database for MySQL-kiszolgálóra a mydumper/myloader használatával című témakört.

  2. Jelentkezzen be a forrás Amazon RDS for MySQL-kiszolgálóra, és állítson be egy replikációs felhasználót. Ezután adja meg a szükséges jogosultságokat ennek a felhasználónak.

    • SSL használata esetén futtassa a következő parancsokat:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL;
      SHOW GRANTS FOR syncuser@'%';
      
    • Ha nem SSL-t használ, futtassa a következő parancsokat:

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

    A tárolt eljárások az összes adat-in replikációs függvényt hajtják végre. Az összes eljárásról további információt a tárolt adatreplikációs eljárásokban talál. Ezeket a tárolt eljárásokat a MySQL-rendszerhéjban vagy a MySQL Workbenchben futtathatja.

  3. Az Amazon RDS for MySQL forráskiszolgáló és a rugalmas Azure Database for MySQL-kiszolgáló célkiszolgálójának összekapcsolásához jelentkezzen be a rugalmas Azure Database for MySQL-kiszolgáló célpéldányára. Állítsa be az Amazon RDS for MySQL-kiszolgálót forráskiszolgálóként az alábbi parancs futtatásával:

    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. A forrás Amazon RDS for MySQL-kiszolgáló és a rugalmas Azure Database for MySQL-kiszolgálópéldány közötti replikáció elindításához futtassa a következő parancsot:

    CALL mysql.az_replication_start;
    
  5. A replikáció állapotának a replikakiszolgálón való ellenőrzéséhez futtassa a következő parancsot:

    show slave status\G
    

    Ha a Slave_IO_Running paraméterek állapota Slave_SQL_Running Igen, a replikáció elindult, és futó állapotban van.

  6. Ellenőrizze a paraméter értékét a Seconds_Behind_Master célkiszolgáló késésének megállapításához.

    Ha az érték 0, a cél feldolgozta a forráskiszolgáló összes frissítését. Ha az érték nem 0, a célkiszolgáló továbbra is feldolgozja a frissítéseket.

Sikeres átállás biztosítása

A sikeres átállás biztosítása:

  1. Konfigurálja a megfelelő bejelentkezéseket és adatbázisszintű engedélyeket a rugalmas Azure Database for MySQL-kiszolgáló célpéldányában.
  2. Leállítja az írást a forrás Amazon RDS for MySQL-kiszolgálóra.
  3. Győződjön meg arról, hogy a rugalmas Azure Database for MySQL-kiszolgáló célpéldánya felzárkózott a forráskiszolgálóhoz, és hogy az Seconds_Behind_Master érték 0 a forráskiszolgálótól.show slave status
  4. Hívja meg a tárolt eljárást mysql.az_replication_stop a replikáció leállításához, mert minden módosítás replikálva lett a rugalmas Azure Database for MySQL-kiszolgáló célpéldányára.
  5. Hívás mysql.az_replication_remove_master az adatreplikációs konfiguráció eltávolítására.
  6. Átirányíthatja az ügyfeleket és az ügyfélalkalmazásokat a rugalmas Azure Database for MySQL-kiszolgálópéldányra.

Ezen a ponton az áttelepítés befejeződött. Az alkalmazások csatlakoznak a rugalmas Azure Database for MySQL-kiszolgálót futtató kiszolgálóhoz.