A data-in replikáció konfigurálása az Azure Database for MariaDB-ben

Fontos

Az Azure Database for MariaDB a nyugdíjazási útvonalon van. Határozottan javasoljuk, hogy migráljon az Azure Database for MySQL-be. További információ az Azure Database for MySQL-be való migrálásról: Mi történik az Azure Database for MariaDB-vel?

Ez a cikk bemutatja, hogyan állíthatja be a data-in replikációt az Azure Database for MariaDB-ben a forrás- és replikakiszolgálók konfigurálásával. Ez a cikk feltételezi, hogy rendelkezik némi korábbi tapasztalattal a MariaDB-kiszolgálókkal és -adatbázisokkal kapcsolatban.

Ha replikát szeretne létrehozni az Azure Database for MariaDB szolgáltatásban, a Data-in Replication szinkronizálja az adatokat egy forrás MariaDB-kiszolgálóról a helyszínen, virtuális gépeken vagy felhőbeli adatbázis-szolgáltatásokban. A beérkező adatokra épülő replikáció a MariaDB natív bináris naplójának (binlog) fájlpozíció-alapú replikációján alapul. A binlog replikációval kapcsolatos további információkért tekintse meg a binlog replikációjának áttekintését.

A cikk lépéseinek végrehajtása előtt tekintse át a data-in replikáció korlátait és követelményeit .

Megjegyzés:

Ha a forráskiszolgáló 10.2-es vagy újabb verziójú, javasoljuk, hogy globális tranzakcióazonosítóval állítsa be a data-in replikációt.

Megjegyzés:

This article contains references to the term slave, a term that Microsoft no longer uses. Ha a kifejezés el lesz távolítva a szoftverből, eltávolítjuk ebből a cikkből.

MariaDB-kiszolgáló létrehozása replikaként való használatra

  1. Hozzon létre egy új Azure Database for MariaDB-kiszolgálót (például replica.mariadb.database.azure.com). A kiszolgáló a replikakiszolgáló a data-in replikációban.

    A kiszolgálólétrehozásról további információt az Azure Database for MariaDB-kiszolgáló létrehozása az Azure Portal használatával című témakörben talál.

    Fontos

    Az Azure Database for MariaDB-kiszolgálót az általános célú vagy memóriaoptimalizált tarifacsomagokban kell létrehoznia.

  2. Azonos felhasználói fiókok és megfelelő jogosultságok létrehozása.

    A felhasználói fiókok nem replikálódnak a forráskiszolgálóról a replikakiszolgálóra. A replikakiszolgálóhoz való felhasználói hozzáférés biztosításához manuálisan kell létrehoznia az újonnan létrehozott Azure Database for MariaDB-kiszolgálón található összes fiókot és megfelelő jogosultságot.

  3. Adja hozzá a forráskiszolgáló IP-címét a replika tűzfalszabályaihoz.

    A tűzfalszabályokat az Azure Portallal vagy az Azure CLI-vel frissítheti.

A forráskiszolgáló konfigurálása

Az alábbi lépések előkészítik és konfigurálják a helyszíni, virtuális gépen vagy felhőbeli adatbázis-szolgáltatásban üzemeltetett MariaDB-kiszolgálót a data-in replikációhoz. A MariaDB-kiszolgáló a adatforrás a data-in replikációban.

  1. A folytatás előtt tekintse át az elsődleges kiszolgáló követelményeit .

  2. Győződjön meg arról, hogy a forráskiszolgáló engedélyezi a bejövő és kimenő forgalmat a 3306-os porton, és hogy a forráskiszolgáló nyilvános IP-címmel rendelkezik, a DNS nyilvánosan elérhető, vagy teljes tartománynévvel (FQDN) rendelkezik.

    Tesztelje a forráskiszolgálóval való kapcsolatot úgy, hogy megpróbál csatlakozni egy másik gépen üzemeltetett MySQL-parancssorból vagy az Azure Portalon elérhető Azure Cloud Shellből .

    Ha a szervezet szigorú biztonsági szabályzatokkal rendelkezik, és nem engedélyezi a forráskiszolgálón lévő összes IP-cím számára az Azure-ból a forráskiszolgálóval való kommunikációt, az alábbi paranccsal meghatározhatja az Azure Database for MariaDB-kiszolgáló IP-címét.

    1. Jelentkezzen be az Azure Database for MariaDB-be egy olyan eszközzel, mint a MySQL parancssor.

    2. Hajtsa végre az alábbi lekérdezést.

      SELECT @@global.redirect_server_host;
      

      Az alábbiakban néhány mintakimenet látható:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. Lépjen ki a MySQL parancssorból.

    4. Hajtsa végre az alábbi pingelési segédprogramot az IP-cím lekéréséhez.

      ping <output of step 2b>
      

      Például:

      C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net
      Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data.
      
    5. Konfigurálja a forráskiszolgáló tűzfalszabályait úgy, hogy az tartalmazza az előző lépés kimeneti IP-címét a 3306-os porton.

    Megjegyzés:

    Ez az IP-cím karbantartási/üzembe helyezési műveletek miatt változhat. Ez a kapcsolati módszer csak azoknak az ügyfeleknek szól, akik nem engedhetik meg maguknak az összes IP-cím engedélyezését a 3306-os porton.

  3. Kapcsolja be a bináris naplózást.

    Ha meg szeretné tudni, hogy a bináris naplózás engedélyezve van-e az elsődlegesen, írja be a következő parancsot:

    SHOW VARIABLES LIKE 'log_bin';
    

    Ha a változó log_bin visszaadja az értéket ON, a bináris naplózás engedélyezve van a kiszolgálón.

    Ha log_bin visszaadja az értéket OFF, szerkessze a my.cnf fájlt, hogy log_bin=ON bekapcsolja a bináris naplózást. Indítsa újra a kiszolgálót a módosítás érvénybe lépéséhez.

  4. A forráskiszolgáló beállításainak konfigurálása.

    A data-in replikáció megköveteli, hogy a paraméter lower_case_table_names konzisztens legyen a forrás- és replikakiszolgálók között. A lower_case_table_names paraméter alapértelmezés szerint az Azure Database for MariaDB-ben van beállítva 1 .

    SET GLOBAL lower_case_table_names = 1;
    
  5. Hozzon létre egy új replikációs szerepkört, és állítson be engedélyeket.

    Hozzon létre egy felhasználói fiókot a forráskiszolgálón, amely replikációs jogosultságokkal van konfigurálva. A fiókot SQL-parancsok vagy MySQL Workbench használatával hozhatja létre. Ha SSL használatával szeretne replikálni, ezt meg kell adnia a felhasználói fiók létrehozásakor.

    Ha meg szeretné tudni, hogyan vehet fel felhasználói fiókokat a forráskiszolgálóra, tekintse meg a MariaDB dokumentációját.

    Az alábbi parancsok használatával az új replikációs szerepkör bármely gépről elérheti a forrást, nem csak a forrást üzemeltető gépről. Ehhez a hozzáféréshez adja meg a syncuser@'%' értéket a felhasználó létrehozásához.

    A MariaDB dokumentációjáról további információt a fióknevek megadásával kapcsolatban talál.

    SQL-parancs

    • Replikáció SSL-lel

      Ha minden felhasználói kapcsolathoz SSL-t szeretne igényelni, írja be a következő parancsot egy felhasználó létrehozásához:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
      
    • Replikáció SSL nélkül

      Ha az SSL nem minden kapcsolathoz szükséges, adja meg a következő parancsot a felhasználó létrehozásához:

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

    MySQL Workbench

    A replikációs szerepkör a MySQL Workbenchben való létrehozásához a Felügyelet panelen válassza a Felhasználók és jogosultságok lehetőséget. Ezután válassza a Fiók hozzáadása lehetőséget.

    Users and Privileges

    Adjon meg egy felhasználónevet a Bejelentkezési név mezőben.

    Sync user

    Válassza a Rendszergazda osztó szerepkörök panelt, majd a Globális jogosultságok listájában válassza a Replikációs rabszolga lehetőséget. Válassza az Alkalmaz lehetőséget a replikációs szerepkör létrehozásához.

    Replication Slave

  6. Állítsa be a forráskiszolgálót írásvédett üzemmódra.

    Az adatbázis memóriaképe előtt a kiszolgálót írásvédett módban kell elhelyezni. Írásvédett módban a forrás nem tud írási tranzakciókat feldolgozni. Az üzleti hatás elkerülése érdekében ütemezze az írásvédett ablakot csúcsidőn kívülre.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Kérje le az aktuális bináris naplófájl nevét és eltolását.

    Az aktuális bináris naplófájl nevének és eltolásának meghatározásához futtassa a parancsot show master status.

    show master status;
    

    Az eredményeknek az alábbi táblázathoz hasonlónak kell lenniük:

    Master Status Results

    Jegyezze fel a bináris fájlnevet, mert a későbbi lépésekben használni fogja.

  8. Szerezze be a GTID-pozíciót (nem kötelező, a GTID-vel való replikációhoz szükséges).

    Futtassa a függvényt BINLOG_GTID_POS a megfelelő binlogfájl nevének és eltolásának GTID-pozíciójának lekéréséhez.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

A forráskiszolgáló memóriaképe és visszaállítása

  1. Az összes adatbázis kiírása a forráskiszolgálóról.

    A mysqldump használatával az összes adatbázist a forráskiszolgálóról lehet kivenni. A MySQL-kódtár és a teszttár nem szükséges.

    További információ: Memóriakép és visszaállítás.

  2. Állítsa be a forráskiszolgálót olvasási/írási módra.

    Az adatbázis kidobása után módosítsa a forrás MariaDB-kiszolgálót írási/olvasási módra.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Állítsa vissza a memóriaképfájlt az új kiszolgálóra.

    Állítsa vissza a memóriaképfájlt az Azure Database for MariaDB szolgáltatásban létrehozott kiszolgálóra. A memóriaképfájl MariaDB-kiszolgálóra való visszaállításáról a Memóriakép és visszaállítás című témakörben olvashat.

    Ha a memóriaképfájl nagy, töltse fel egy Azure-beli virtuális gépre a replikakiszolgálóval azonos régióban. Állítsa vissza az Azure Database for MariaDB-kiszolgálóra a virtuális gépről.

  1. Állítsa be a forráskiszolgálót.

    Az összes adatreplikációs függvény tárolt eljárásokkal történik. A data-in replikációs tárolt eljárásokban minden eljárás megtalálható. A tárolt eljárások futtathatók a MySQL-rendszerhéjban vagy a MySQL Workbenchben.

    Két kiszolgáló összekapcsolásához és a replikáció elindításához jelentkezzen be a célreplika-kiszolgálóra az Azure DB for MariaDB szolgáltatásban. Ezután állítsa be a külső példányt forráskiszolgálóként az mysql.az_replication_change_master Azure DB for MariaDB-kiszolgálón tárolt vagy mysql.az_replication_change_master_with_gtid tárolt eljárással.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    vagy

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: a forráskiszolgáló állomásneve
    • master_user: a forráskiszolgáló felhasználóneve
    • master_password: a forráskiszolgáló jelszava
    • master_log_file: a bináris naplófájl neve nem fut show master status
    • master_log_pos: bináris napló pozíciója a futtatástól show master status
    • master_gtid_pos: GTID-pozíció futtatása select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: A hitelesítésszolgáltatói tanúsítvány környezete. Ha nem SSL-t használ, adjon meg egy üres sztringet.*

    *Javasoljuk, hogy a master_ssl_ca paramétert adja meg változóként. További információkért tekintse meg az alábbi példákat.

    Példák

    • Replikáció SSL-lel

      Hozza létre a változót @cert a következő parancsok futtatásával:

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

      Az SSL-replikáció a tartomány companya.com üzemeltetett forráskiszolgáló és az Azure Database for MariaDB-ben üzemeltetett replikakiszolgáló között van beállítva. Ez a tárolt eljárás a replikán fut.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • Replikáció SSL nélkül

      Az SSL nélküli replikáció a tartomány companya.com üzemeltetett forráskiszolgáló és az Azure Database for MariaDB-ben üzemeltetett replikakiszolgáló között van beállítva. Ez a tárolt eljárás a replikán fut.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Indítsa el a replikációt.

    A replikáció elindításához hívja meg a mysql.az_replication_start tárolt eljárást.

    CALL mysql.az_replication_start;
    
  3. Ellenőrizze a replikáció állapotát.

    A replikáció állapotának show slave status megtekintéséhez hívja meg a replikakiszolgáló parancsát.

    show slave status;
    

    Slave_SQL_Running Ha Slave_IO_Running a replikáció állapota yesés értéke Seconds_Behind_Master az0, akkor a replikáció működik. Seconds_Behind_Master A replika késését jelzi. Ha az érték nem 0, akkor a replika feldolgozja a frissítéseket.

  4. Frissítse a megfelelő kiszolgálóváltozókat, hogy biztonságosabbá tegyék az adatreplikálást (csak a GTID nélküli replikációhoz szükséges).

    A MariaDB natív replikációs korlátozása miatt a GTID-forgatókönyv nélkül kell beállítania sync_master_info és sync_relay_log_info változókat a replikációhoz.

    Ellenőrizze a replikakiszolgáló sync_master_info és sync_relay_log_info a változók adatait, hogy az adatok replikálása stabil-e, és állítsa a változókat a következőre 1: .

Egyéb tárolt eljárások

Replikáció leállítása

A forrás- és replikakiszolgáló közötti replikáció leállításához használja a következő tárolt eljárást:

CALL mysql.az_replication_stop;

A replikációs kapcsolat eltávolítása

A forrás- és replikakiszolgáló közötti kapcsolat eltávolításához használja a következő tárolt eljárást:

CALL mysql.az_replication_remove_master;

A replikációs hiba kihagyása

A replikációs hiba kihagyásához és a replikáció engedélyezéséhez használja a következő tárolt eljárást:

CALL mysql.az_replication_skip_counter;

További lépések

További információ az Azure Database for MariaDB-hez készült data-in replikációról.