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:
- A kiszolgáló létrehozása zónaredundáns ha engedélyezve
- A HA letiltása
- Kövesse a cikket az adatok replikálásának beállításához
- Az átállás után távolítsa el az adatbeadási replikáció konfigurációját
- 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.
- Ha a forráson engedélyezve van egy nyilvános végpont, győződjön meg arról, hogy a cél csatlakozni tud a forráshoz a tűzfalszabály "Hozzáférés engedélyezése az Azure-szolgáltatásokhoz" beállításával. További információ: Tűzfalszabályok – Azure Database for MySQL.
- Ha a forráson engedélyezve van egy privát végpont és a nyilvános hozzáférés megtagadása , telepítse a privát kapcsolatot ugyanabban a virtuális hálózatban, amely a célt üzemelteti. További információ: Private Link – Azure Database for MySQL.
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:
Jelentkezzen be arra az Azure-beli virtuális gépre, amelyre telepítette a mysql-ügyféleszközt.
Csatlakozzon a forráshoz és a célhoz a mysql-ügyfél eszközzel.
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.
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'@'%';
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
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:
Jegyezze fel a bináris fájl nevét a későbbi lépésekben való használathoz.
Á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
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>, ‘’);
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;
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.
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;
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.
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');
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.
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:
- 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.
- 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.
- 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.
- 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.
- Átirányíthatja az ügyfeleket és az ügyfélalkalmazásokat a Azure Database for MySQL rugalmas kiszolgáló célpéldányára.
- 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.
- 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
- További információ az adatreplikálásról: Adatok replikálása Azure Database for MySQL rugalmas kiszolgálóra és Azure Database for MySQL rugalmas kiszolgálói adatok replikálásának konfigurálása
- További információ a Azure Database for MySQL gyakori hibáinak elhárításáról.
- További információ a MySQL offline Azure Database for MySQL Azure Database Migration Service használatával történő migrálásáról.