Azure Database for MySQL migrálása – Önálló kiszolgáló Azure Database for MySQL – rugalmas kiszolgáló nyílt forráskódú eszközökkel

A Azure Database for MySQL egypéldányos kiszolgálóját Azure Database for MySQL - rugalmas kiszolgálóra migrálhatja, és minimális állásidőt biztosít az alkalmazások számára olyan nyílt forráskódú eszközökkel, mint a mydumper/myloader és a Data-in replikáció.

Megjegyzé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 bemenő adatreplikálás egy olyan technika, amely a bináris naplófájlok helymeghatározási módszere alapján replikálja az adatváltozásokat a forráskiszolgálóról a célkiszolgálóra. Ebben a forgatókönyvben a forrásként működő MySQL-példány (amelyről az adatbázis változásai származnak) a frissítéseket és a módosításokat "eseményekként" írja a bináris naplóba. A bináris naplóban található információk különböző naplózási formátumokban tárolódnak a rögzített adatbázis-módosításoknak megfelelően. 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 replika helyi adatbázisába való bináris bejelentkezésben.

Ha az adatbeadási replikációt úgy állítja be, hogy az adatokat az Azure Database for MySQL egyik példányáról a másikra szinkronizálja, akkor az alkalmazások szelektív átvágását végezheti el az elsődleges (vagy forrásadatbázisból) a replikába (vagy a céladatbázisba).

Ebben az oktatóanyagban a mydumper/myloader és a Data-in replikáció használatával migrál egy mintaadatbázist (klasszikusmodelleket) a Azure Database for MySQL egy példányából – önálló kiszolgálóról Azure Database for MySQL - rugalmas kiszolgálóra, majd szinkronizálja az adatokat.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Konfigurálja a hálózati beállításokat a bejövő adatreplikáláshoz különböző forgatókönyvekhez.
  • Konfigurálja az adatok integrálását az elsődleges és a replika között.
  • Tesztelje a replikációt.
  • Átállás a migrálás befejezéséhez.

Előfeltételek

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

  • Az 5.7-es vagy 8.0-s verziót futtató Azure Database for MySQL önálló kiszolgáló példánya.

    Megjegyzés

    Ha Azure Database for MySQL önálló kiszolgáló 5.6-os verzióját futtatja, frissítse a példányt az 5.7-es verzióra, majd konfigurálja az adatokat a replikációban. További információ: Főverzió-frissítés az Azure Database for MySQL – Önálló kiszolgálóban.

  • A Azure Database for MySQL rugalmas kiszolgáló egy példánya. További információ: Példány létrehozása Azure Database for MySQL rugalmas kiszolgálón.

    Megjegyzés

    Az adatbetöltési replikáció konfigurálása zónaredundáns magas rendelkezésre állású kiszolgálókhoz nem támogatott. Ha zónaredundáns HA-t szeretne használni a célkiszolgálóhoz, hajtsa végre az alábbi lépéseket:

    1. A kiszolgáló létrehozása zónaredundáns ha engedélyezve
    2. A HA letiltása
    3. Kövesse a cikket az adatok replikálásának beállításához
    4. Az átállás után távolítsa el az adatbeadási replikáció konfigurációját
    5. A HA engedélyezése

    Győződjön meg arról, hogy GTID_Mode ugyanazzal a beállítással rendelkezik a forrás- és célkiszolgálókon.

  • Adatbázis csatlakoztatása és létrehozása a MySQL Workbench használatával. További információ: Adatok csatlakoztatása és lekérdezése a MySQL Workbench használatával.

  • Annak biztosítása érdekében, hogy a linuxos Azure-beli virtuális gép ugyanabban a régióban (vagy ugyanazon a virtuális hálózaton, privát hozzáféréssel) fusson, amely a forrás- és céladatbázisokat tárolja.

  • A mysql-ügyfél vagy a MySQL Workbench (az ügyféleszközök) telepítése az Azure-beli virtuális gépen. Győződjön meg arról, hogy az elsődleges és a replikakiszolgálóhoz is tud csatlakozni. A cikk alkalmazásában a mysql-ügyfél telepítve van.

  • A mydumper/myloader telepítése az Azure-beli virtuális gépen. További információt a mydumper/myloader című cikkben talál.

  • A klasszikusmodell-adatbázis mintaadatbázis-szkriptjének letöltése és futtatása a forráskiszolgálón.

  • Konfigurálja a binlog_expire_logs_seconds a forráskiszolgálón, hogy a bináris naplók ne törlődjenek, mielőtt a replika véglegesíti a módosításokat. A sikeres átvágás után alaphelyzetbe állíthatja az értéket.

Hálózati követelmények konfigurálása

A data-in replikáció konfigurálásához meg kell győződnie arról, hogy a cél csatlakozni tud a forráshoz a 3306-os porton keresztül. A forráson beállított végpont típusától függően hajtsa végre a megfelelő lépéseket.

Adatok be- és bereplikálásának konfigurálása

A replikációban lévő adatok konfigurálásához hajtsa végre a következő lépéseket:

  1. Jelentkezzen be arra az Azure-beli virtuális gépre, amelyre telepítette a mysql-ügyféleszközt.

  2. Csatlakozzon a forráshoz és a célhoz a mysql-ügyfél eszközzel.

  3. A következő parancs futtatásával állapítsa meg, hogy a log_bin engedélyezve van-e a forráson a mysql-ügyféleszköz:

    SHOW VARIABLES LIKE 'log_bin';
    

    Megjegyzés

    Ha Azure Database for MySQL egykiszolgálós, nagy méretű tárhellyel, amely akár 16 TB-ot is támogat, ez alapértelmezés szerint engedélyezve van.

    Tipp

    A legfeljebb 4 TB-t támogató Azure Database for MySQL önálló kiszolgáló esetében ez alapértelmezés szerint nincs engedélyezve. Ha azonban előléptet egy olvasási replikát a forráskiszolgálóhoz, majd törli az olvasási replikát, a paraméter BE értékre lesz állítva.

  4. A forráskiszolgáló SSL-kényszerítése alapján hozzon létre egy felhasználót a forráskiszolgálón a replikációs engedéllyel a megfelelő parancs futtatásával.

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

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
    

    Ha nem SSL-t használ, futtassa a következő parancsot:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    
  5. Az adatbázis mydumper használatával történő biztonsági mentéséhez futtassa a következő parancsot az Azure-beli virtuális gépen, ahol telepítettük a mydumper\myloadert:

    mydumper --host=<primary_server>.mysql.database.azure.com --user=<username>@<primary_server> --password=<Password> --outputdir=./backup --rows=100000 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl  --regex '^(classicmodels\.)' -L mydumper-logs.txt
    

    Tipp

    A --trx-consistency-only beállítás szükséges a tranzakciós konzisztencia szempontjából, amíg biztonsági másolatot készítünk.

    • A mysqldump --single-transaction mydumper megfelelője.
    • Akkor hasznos, ha az összes tábla InnoDB.
    • A "fő" szálnak csak a globális zárolást kell tárolnia, amíg a "memóriakép" szálak el nem indíthatnak egy tranzakciót.
    • A globális zárolás legrövidebb időtartamát kínálja

    A "fő" szálnak csak a globális zárolást kell tárolnia, amíg a "memóriakép" szálak el nem indíthatnak egy tranzakciót.

    A parancs változóit az alábbiakban ismertetjük:

    HOW-TO-MANAGE-FIREWALL-PORTAL --host: Az elsődleges kiszolgáló neve

    • --Felhasználó: Felhasználó neve (username@servername formátumban, mivel az elsődleges kiszolgáló Azure Database for MySQL - önálló kiszolgálót futtat). Használhat kiszolgálói rendszergazdát vagy SELECT és RELOAD engedélyekkel rendelkező felhasználót.
    • --Jelszó: A fenti felhasználó jelszava

    További információ a mydumper használatáról: mydumper/myloader

  6. Olvassa el a metaadatfájlt a bináris naplófájl nevének meghatározásához és az eltoláshoz az alábbi parancs futtatásával:

    cat ./backup/metadata 
    

    Ebben a parancsban a ./backup az előző lépésben a parancsban használt kimeneti könyvtárra hivatkozik.

    Az eredményeknek az alábbi képen látható módon kell megjelennie:

    Folyamatos szinkronizálás a Azure Database Migration Service

    Jegyezze fel a bináris fájl nevét a későbbi lépésekben való használathoz.

  7. Állítsa vissza az adatbázist a myloaderrel a következő parancs futtatásával:

    myloader --host=<servername>.mysql.database.azure.com --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
    

    A parancs változóit az alábbiakban ismertetjük:

    • --Fogadó: A replikakiszolgáló neve
    • --Felhasználó: Felhasználó neve. Használhat kiszolgálói rendszergazdát vagy olvasási\írási engedéllyel rendelkező felhasználót, aki visszaállíthatja a sémákat és az adatokat az adatbázisba
    • --Jelszó: A fenti felhasználó jelszava
  8. Az elsődleges kiszolgálón az SSL-kényszerítéstől függően csatlakozzon a replikakiszolgálóhoz a mysql-ügyféleszköz használatával, és hajtsa végre az alábbi lépéseket.

    • Ha az SSL-kényszerítés engedélyezve van, akkor:

      i. Innen töltheti le az SSL-kapcsolaton keresztüli kommunikációhoz szükséges tanúsítványt a Azure Database for MySQL-kiszolgálóval.

      ii. Nyissa meg a fájlt a jegyzettömbben, és illessze be a tartalmat a "NYILVÁNOS KULCSÚ TANÚSÍTVÁNY KÖRNYEZETÉNEK ELHELYEZÉSE ITT" szakaszba.

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE'S CONTEXT HERE 
      -----END CERTIFICATE-----'
      

      iii. A replikációban lévő adatok konfigurálásához futtassa a következő parancsot:

      CALL mysql.az_replication_change_master('<Primary_server>.mysql.database.azure.com', '<username>@<primary_server>', '<Password>', 3306, '<File_Name>', <Position>, @cert);
      

      Megjegyzés

      Határozza meg a pozíciót és a fájlnevet a 6. lépésben kapott információk alapján.

    • Ha az SSL-kényszerítés nincs engedélyezve, futtassa a következő parancsot:

      CALL mysql.az_replication_change_master('<Primary_server>.mysql.database.azure.com', '<username>@<primary_server>', '<Password>', 3306, '<File_Name>', <Position>, ‘’);
      
  9. A replikakiszolgálóról történő replikáció elindításához hívja meg az alábbi tárolt eljárást.

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

    show slave status \G; 
    

    Megjegyzés

    A MySQL Workbench használata esetén nincs szükség a \G módosítóra.

    Ha a Slave_IO_Running és a Slave_SQL_Running állapota Igen, és a Seconds_Behind_Master értéke 0, akkor a replikáció jól működik. Seconds_Behind_Master a replika késését jelzi. Ha az érték nem 0, akkor a replika a frissítéseket dolgozza fel.

A replikáció tesztelése (nem kötelező)

Annak ellenőrzéséhez, hogy a data-in replikáció megfelelően működik-e, ellenőrizheti, hogy az elsődleges tábla módosításai replikálva lettek-e a replikára.

  1. Azonosítsa a teszteléshez használandó táblát, például a Vevők táblát, majd győződjön meg arról, hogy a benne található bejegyzések száma megegyezik az elsődleges és replikakiszolgálókon. Ehhez futtassa a következő parancsot mindegyiken:

    select count(*) from customers;
    
  2. Jegyezze fel a bejegyzések számát a későbbi összehasonlításhoz.

    A replikáció teszteléséhez próbáljon meg adatokat hozzáadni az elsődleges kiszolgáló ügyféltábláihoz, majd ellenőrizze, hogy az új adatok replikálva vannak-e. Ebben az esetben két sort fog hozzáadni egy táblához az elsődleges kiszolgálón, majd meg kell erősítenie, hogy azok replikálva vannak a replikakiszolgálón.

  3. Az elsődleges kiszolgáló Ügyfelek táblájában szúrjon be sorokat a következő parancs futtatásával:

    insert  into `customers`(`customerNumber`,`customerName`,`contactLastName`,`contactFirstName`,`phone`,`addressLine1`,`addressLine2`,`city`,`state`,`postalCode`,`country`,`salesRepEmployeeNumber`,`creditLimit`) values 
    (<ID>,'name1','name2','name3 ','11.22.5555','54, Add',NULL,'Add1',NULL,'44000','country',1370,'21000.00');
    
  4. A replikáció állapotának ellenőrzéséhez hívja meg a show slave status \G parancsot annak ellenőrzéséhez, hogy a replikáció a várt módon működik-e.

  5. A replikakiszolgálón futtassa a következő parancsot annak ellenőrzéséhez, hogy a darabszám megegyezik-e:

    select count(*) from customers;
    

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

A sikeres átállás érdekében a következő feladatokat kell elvégeznie:

  1. A célkiszolgálóhoz való csatlakozáshoz konfigurálja a megfelelő kiszolgálószintű tűzfalat és virtuális hálózati szabályokat. A portálon összehasonlíthatja a forrásra és a célra vonatkozó tűzfalszabályokat.
  2. Konfigurálja a megfelelő bejelentkezéseket és adatbázisszintű engedélyeket a célkiszolgálón. Futtassa a SELECT FROM mysql.user parancsot a forrás- és célkiszolgálókon az összehasonlításhoz.
  3. Győződjön meg arról, hogy az Azure Database for MySQL önálló kiszolgálóhoz bejövő összes bejövő kapcsolat le van állítva.

    Tipp

    Beállíthatja, hogy a Azure Database for MySQL önálló kiszolgáló csak olvasható legyen.

  4. Győződjön meg arról, hogy a replika utolérte az elsődleges példányt. Ehhez futtassa a show slave status \G parancsot, és győződjön meg arról, hogy a Seconds_Behind_Master paraméter értéke 0.
  5. Átirányíthatja az ügyfeleket és az ügyfélalkalmazásokat a Azure Database for MySQL rugalmas kiszolgáló célpéldányára.
  6. Az átállás befejezéséhez futtassa a mysql.az_replication_stop tárolt eljárást, amely leállítja a replikakiszolgálóról történő replikációt.
  7. Hívja mysql.az_replication_remove_master az adatreplikációs konfiguráció eltávolításához.

Ezen a ponton az alkalmazások csatlakoznak az új Azure Database for MySQL rugalmas kiszolgálóhoz, és a forrás módosításai nem replikálódnak a célhelyre. Azure Database for MySQL-tűzfalszabályok létrehozása és kezelése az Azure Portalon

Következő lépések