Share via


Kiszolgálóparaméterek az Azure Database for MySQL-ben – rugalmas kiszolgáló

A következőkre vonatkozik: Azure Database for MySQL – rugalmas kiszolgáló

Ez a cikk megfontolandó szempontokat és irányelveket tartalmaz a kiszolgálóparaméterek rugalmas Azure Database for MySQL-kiszolgálón való konfigurálásához.

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.

Mik azok a kiszolgálóváltozók?

A MySQL-motor számos különböző kiszolgálóváltozót/paramétert biztosít, amelyek a motor viselkedésének konfigurálásához és finomhangolásához használhatók. Egyes paraméterek futásidőben dinamikusan állíthatók be, míg mások "statikusak", ezért a kiszolgáló újraindítására van szükség az alkalmazáshoz.

A rugalmas Azure Database for MySQL-kiszolgáló lehetővé teszi a különböző MySQL-kiszolgálóparaméterek értékének módosítását az Azure Portal és az Azure CLI használatával a számítási feladat igényeinek megfelelően.

Konfigurálható kiszolgálóparaméterek

Az Azure Database for MySQL rugalmas kiszolgálókonfigurációját kiszolgálóparaméterekkel kezelheti. A kiszolgálóparaméterek a kiszolgáló létrehozásakor az alapértelmezett és ajánlott értékkel vannak konfigurálva. Az Azure Portal kiszolgálóparaméter paneljén a módosítható és a nem módosítható kiszolgálóparaméterek is láthatók. A nem módosítható kiszolgálóparaméterek szürkére vannak szürkítve.

A támogatott kiszolgálóparaméterek listája folyamatosan növekszik. Az Azure Portal kiszolgálóparaméterek lapján megtekintheti a teljes listát, és konfigurálhatja a kiszolgálóparaméterek értékeit.

A gyakran frissített kiszolgálóparaméterek korlátairól az alábbi szakaszokban olvashat bővebben. A korlátokat a kiszolgáló számítási szintje és mérete (virtuális magok) határozzák meg.

Feljegyzés

  • Ha a portál használatával módosít egy statikus kiszolgálóparamétert, újra kell indítania a kiszolgálót a módosítások érvénybe lépéséhez. Ha automatizálási szkripteket használ (például ARM-sablonokat, Terraformot, Azure CLI-t stb.), akkor a szkriptnek rendelkeznie kell egy kiépítéssel, amely újraindítja a szolgáltatást a beállítások érvénybe lépéséhez, még akkor is, ha a konfigurációkat a létrehozási folyamat részeként módosítja.
  • Ha módosítani szeretne egy nem módosítható kiszolgálóparamétert a környezetéhez, nyisson meg egy UserVoice-elemet , vagy szavazzon, ha a visszajelzés már létezik, amely segíthet a rangsorolásban.

lower_case_table_names

A MySQL 5.7-es verziója esetén az alapértelmezett érték 1 a rugalmas Azure Database for MySQL-kiszolgálón. Fontos megjegyezni, hogy bár a támogatott érték 2-re módosítható, a 2-ről 1-re való visszaállítás nem engedélyezett. Az alapértelmezett érték módosításához forduljon támogatási csapatunkhoz. A MySQL 8.0-s vagy újabb verziójához lower_case_table_names csak a kiszolgáló inicializálásakor konfigurálható. További információ. A kiszolgáló inicializálása után tilos módosítani a lower_case_table_names beállítást. A MySQL 8.0-s verziója esetén az alapértelmezett érték 1 a rugalmas Azure Database for MySQL-kiszolgálón. A MySQL 8.0-s verziójának támogatott értéke 1 és 2 a rugalmas Azure Database for MySQL-kiszolgálón. A kiszolgáló létrehozása során az alapértelmezett érték módosításához forduljon támogatási csapatunkhoz.

innodb_tmpdir

A rugalmas Azure Database for MySQL-kiszolgáló innodb_tmpdir paramétere az újraépítendő online ALTER TABLE-műveletek során létrehozott ideiglenes rendezési fájlok könyvtárának meghatározására szolgál. A innodb_tmpdir alapértelmezett értéke ./mnt/temp Ez a hely megfelel az ideiglenes tároló SSD-nek, amely a GiB-ben érhető el minden egyes kiszolgáló számítási méretével. Ez a hely ideális olyan műveletekhez, amelyek nem igényelnek nagy mennyiségű helyet. Ha több helyre van szükség, beállíthatja a innodb_tmpdir értékre /app/work/tmpdir. Ez a rugalmas Azure Database for MySQL-kiszolgálón elérhető tárhelyet és kapacitást használja. Ez olyan nagyobb műveleteknél lehet hasznos, amelyek több ideiglenes tárterületet igényelnek. Fontos megjegyezni, hogy a használat /app/work/tmpdir lassabb teljesítményt eredményez az alapértelmezett ideiglenes tárterülethez (SSD)/mnt/temp képest. A választást a műveletek konkrét követelményei alapján kell megválasztani.

A megadott innodb_tmpdir információk a innodb_temp_tablespaces_dir, a tmpdir és a slave_load_tmpdir paraméterekre vonatkoznak, ahol az alapértelmezett érték /mnt/temp gyakori, és az alternatív könyvtár /app/work/tmpdir a megnövekedett ideiglenes tárolás konfigurálásához érhető el, és az adott üzemeltetési követelményeken alapuló teljesítménybeli kompromisszummal jár.

log_bin_trust_function_creators

A rugalmas Azure Database for MySQL-kiszolgálón a bináris naplók mindig engedélyezve vannak (azaz log_bin BE értékre van állítva). log_bin_trust_function_creators alapértelmezés szerint BE értékre van állítva a rugalmas kiszolgálókon.

A bináris naplózás formátuma mindig SOR, és a kiszolgálóhoz csatlakozó összes kapcsolat mindig soralapú bináris naplózást használ. Soralapú bináris naplózás esetén a biztonsági problémák nem léteznek, és a bináris naplózás nem tud megszakadni, így biztonságosan engedélyezhetilog_bin_trust_function_creators, hogy bekapcsolva maradjon.

Ha a(z) [log_bin_trust_function_creators] beállítás ki van kapcsolva, ha triggereket próbál létrehozni, a SUPER jogosultsággal nem rendelkezőhöz hasonló hibákat tapasztalhat, és a bináris naplózás engedélyezve van (érdemes lehet a kevésbé biztonságos log_bin_trust_function_creators változót használni).

innodb_buffer_pool_size

A paraméterről további információt a MySQL dokumentációjában talál.

Tarifacsomag virtuális mag(ok) Memória mérete (GiB) Alapértelmezett érték (bájt) Minimális érték (bájt) Maximális érték (bájt)
Kipukkanható (B1s) 0 0 134217728 33554432 134217728
Kipukkanható (B1ms) 0 2 536870912 134217728 536870912
Átmenetileg fokozható teljesítmény 2 4 2147483648 134217728 2147483648
Általános célú 2 8 5368709120 134217728 5368709120
Általános célú 4 16 12884901888 134217728 12884901888
Általános célú 8 32 25769803776 134217728 25769803776
Általános célú 16 64 51539607552 134217728 51539607552
Általános célú 32 128 103079215104 134217728 103079215104
Általános célú 48 192 154618822656 134217728 154618822656
Általános célú 64 256 206158430208 134217728 206158430208
Üzletileg kritikus 2 16 12884901888 134217728 12884901888
Üzletileg kritikus 4 32 25769803776 134217728 25769803776
Üzletileg kritikus 8 64 51539607552 134217728 51539607552
Üzletileg kritikus 16 128 103079215104 134217728 103079215104
Üzletileg kritikus 32 256 206158430208 134217728 206158430208
Üzletileg kritikus 48 384 309237645312 134217728 309237645312
Üzletileg kritikus 64 504 405874409472 134217728 405874409472

innodb_file_per_table

A MySQL az InnoDB-táblát különböző táblaterekben tárolja a tábla létrehozása során megadott konfiguráció alapján. A rendszer táblatere az InnoDB adatszótár tárolási területe. A táblánkénti fájltér egyetlen InnoDB-tábla adatait és indexeit tartalmazza, és a fájlrendszer saját adatfájljában tárolja. Ezt a viselkedést a innodb_file_per_table kiszolgálóparaméter vezérli. A beállítás innodb_file_per_table hatására az OFF InnoDB táblákat hoz létre a rendszer táblaterében. Ellenkező esetben az InnoDB táblákat hoz létre a fájlonkénti táblaterekben.

A rugalmas Azure Database for MySQL-kiszolgáló egyetlen adatfájlban támogatja a legnagyobb, 4 TB-os elemet. Ha az adatbázis mérete nagyobb mint 4 TB, akkor a táblát az innodb_file_per_table táblatérben kell létrehoznia. Ha egyetlen tábla mérete nagyobb 4 TB-nál, használjon partíciós táblát.

innodb_log_file_size

innodb_log_file_size egy naplócsoport egyes naplófájljainak bájtban megadott mérete. A naplófájlok összesített mérete (innodb_log_file_size * innodb_log_files_in_group) nem haladhatja meg az 512 GB-nál valamivel kisebb maximális értéket. A nagyobb naplófájlméret jobb a teljesítményhez, de hátránya, hogy az összeomlás utáni helyreállítási idő magas. Ki kell egyensúlyoznia a helyreállítási időt egy összeomlási helyreállítás ritka eseményében, és maximalizálnia kell az átviteli sebességet a csúcsműveletek során. Ezek hosszabb újraindítási időt is eredményezhetnek. Ezen értékek bármelyikére konfigurálhat innodb_log_size – 256 MB, 512 MB, 1 GB vagy 2 GB rugalmas Azure Database for MySQL-kiszolgálóhoz. A paraméter statikus, és újraindítást igényel.

Feljegyzés

Ha az alapértelmezett innodb_log_file_size paramétert módosította, ellenőrizze, hogy a "globális állapot megjelenítése, például a "innodb_buffer_pool_pages_dirty" érték 30 másodpercig 0 marad-e az újraindítás késleltetésének elkerülése érdekében.

max_connections

Ennek értékét max_connection a kiszolgáló memóriamérete határozza meg.

Tarifacsomag virtuális mag(ok) Memória mérete (GiB) Alapértelmezett érték Minimális érték Maximális érték
Kipukkanható (B1s) 0 0 85 10 171
Kipukkanható (B1ms) 0 2 171 10 341
Átmenetileg fokozható teljesítmény 2 4 341 10 683
Általános célú 2 8 683 10 1365
Általános célú 4 16 1365 10 2731
Általános célú 8 32 2731 10 5461
Általános célú 16 64 5461 10 10923
Általános célú 32 128 10923 10 21845
Általános célú 48 192 16384 10 32 768
Általános célú 64 256 21845 10 43691
Üzletileg kritikus 2 16 1365 10 2731
Üzletileg kritikus 4 32 2731 10 5461
Üzletileg kritikus 8 64 5461 10 10923
Üzletileg kritikus 16 128 10923 10 21845
Üzletileg kritikus 32 256 21845 10 43691
Üzletileg kritikus 48 384 32 768 10 65536
Üzletileg kritikus 64 504 43008 10 86016

Ha a kapcsolatok túllépik a korlátot, a következő hibaüzenet jelenhet meg:

1040-S HIBA (08004): Túl sok kapcsolat

Fontos

A legjobb élmény érdekében javasoljuk, hogy a kapcsolatok hatékony kezeléséhez használjon egy olyan kapcsolatkészletezőt, mint a ProxySQL.

Az új ügyfélkapcsolatok létrehozása a MySQL-hez időbe telik, és a létrehozásuk után ezek a kapcsolatok még tétlen állapotban is adatbázis-erőforrásokat foglalnak el. A legtöbb alkalmazás sok rövid élettartamú kapcsolatot igényel, ami ezt a helyzetet is meghatározza. Az eredmény az, hogy kevesebb erőforrás áll rendelkezésre a tényleges számítási feladathoz, ami a teljesítmény csökkenéséhez vezet. Ennek elkerülése érdekében egy olyan kapcsolatkészletező segít, amely csökkenti az inaktív kapcsolatokat, és újra felhasználja a meglévő kapcsolatokat. A ProxySQL beállításával kapcsolatos további információkért látogasson el blogbejegyzésünkbe.

Feljegyzés

A ProxySQL egy nyílt forráskód közösségi eszköz. A Microsoft minden tőle telhetőt megtesz. Annak érdekében, hogy mérvadó útmutatással éles támogatást kapjon, kiértékelheti és megkeresheti a ProxySQL terméktámogatását.

innodb_strict_mode

Ha a "Túl nagy sorméret (> 8126)" hibához hasonló hibaüzenet jelenik meg, érdemes lehet kikapcsolni a innodb_strict_mode paramétert. A kiszolgálói paraméter innodb_strict_mode nem módosítható globálisan a kiszolgáló szintjén, mert ha a soradatok mérete nagyobb, mint 8k, az adatok hiba nélkül csonkulnak, ami potenciális adatvesztéshez vezethet. Javasoljuk, hogy módosítsa a sémát az oldalméret korlátjának megfelelően.

Ez a paraméter munkamenet szintjén állítható be a következő használatával init_connect: . A innodb_strict_mode munkamenet szintjén történő beállításához tekintse meg a nem felsorolt beállítási paramétert.

Feljegyzés

Ha olvasási replikakiszolgálóval rendelkezik, a innodb_strict_mode beállítása kikapcsolva értékre a forráskiszolgáló munkamenet szintjén megszakítja a replikációt. Olvasási replikák esetén azt javasoljuk, hogy a paraméter legyen bekapcsolva.

time_zone

A kezdeti üzembe helyezéskor a rugalmas Azure Database for MySQL-kiszolgálópéldány rendszertáblákat tartalmaz az időzóna-információkhoz, de ezek a táblák nincsenek feltöltve. Az időzónatáblák feltölthetők úgy, hogy meghívják a mysql.az_load_timezone tárolt eljárást egy olyan eszközről, mint a MySQL parancssor vagy a MySQL Workbench. A tárolt eljárás meghívásáról és a globális vagy munkamenetszintű időzónák beállításáról az Azure Portalon vagy az Azure CLI-ben olvashat.

binlog_expire_logs_seconds

A rugalmas Azure Database for MySQL-kiszolgálón ez a paraméter határozza meg, hogy a szolgáltatás hány másodpercet vár a bináris naplófájl törlése előtt.

A bináris napló olyan "eseményeket" tartalmaz, amelyek az adatbázis változásait írják le, például a táblalétrehozási műveleteket vagy a táblaadatok módosítását. Olyan utasítások eseményeit is tartalmazza, amelyek esetleg módosításokat is okozhattak volna. A bináris naplót főként két célra, replikációs és adat-helyreállítási műveletekre használják. A bináris naplók általában azonnal törlődnek, amint a leíró szolgáltatástól, biztonsági mentéstől vagy replikakészlettől mentes. Ha több replika is létezik, a bináris naplók megvárják, amíg a leglassabb replika felolvassa a módosításokat a törlés előtt. Ha hosszabb ideig szeretné őrizni a bináris naplókat, konfigurálhatja a binlog_expire_logs_seconds paramétert. Ha a binlog_expire_logs_seconds 0 értékre van állítva, amely az alapértelmezett érték, a bináris napló leírójának felszabadítása után azonnal törlődik. Ha binlog_expire_logs_seconds > 0, akkor megvárja, amíg a másodpercek konfigurálva lesznek a törlés előtt. Rugalmas Azure Database for MySQL-kiszolgáló esetén a felügyelt funkciók, például a bináris fájlok biztonsági mentése és olvasási replika törlése belsőleg lesznek kezelve. Amikor rugalmas Azure Database for MySQL-kiszolgálóról replikálja az adatokat, ezt a paramétert elsődlegesen kell beállítani, hogy elkerülje a bináris naplók törlését, mielőtt a replika beolvassa az elsődleges módosításokat. Ha a binlog_expire_logs_seconds magasabb értékre állítja, akkor a bináris naplók nem lesznek elég hamar kiürítve, és a tárterület számlázásának növekedéséhez vezethetnek.

event_scheduler

A rugalmas Azure Database for MySQL-kiszolgálón a kiszolgálóparaméter kezeli az event_schedule ütemezés szerint futó események létrehozását, ütemezését és futtatását, és egy speciális eseményütemező-szál futtatja őket. Ha a event_scheduler paraméter BE értékre van állítva, az eseményütemező szál démonfolyamatként jelenik meg a SHOW PROCESSLIST kimenetében. Eseményeket az alábbi SQL-szintaxissal hozhat létre és ütemezhet:

CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;

Feljegyzés

Az esemény létrehozásával kapcsolatos további információkért tekintse meg a MySQL Eseményütemező dokumentációját itt:

A event_scheduler kiszolgálóparaméter konfigurálása

Az alábbi forgatókönyv bemutatja a event_scheduler paraméter rugalmas Azure Database for MySQL-kiszolgálón való használatának egyik módját. A forgatókönyv bemutatásához tekintse meg az alábbi példát, egy egyszerű táblát:

mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| CreatedAt | timestamp   | YES  |     | NULL    |                |
| CreatedBy | varchar(16) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)

A rugalmas Azure Database for MySQL-kiszolgálón a kiszolgálóparaméter konfigurálásához event_scheduler hajtsa végre a következő lépéseket:

  1. Az Azure Portalon keresse meg a rugalmas Azure Database for MySQL-kiszolgálópéldányt, majd a Gépház alatt válassza ki a Kiszolgáló paramétereit.

  2. A Kiszolgálóparaméterek panelen keresse meg event_scheduleraz ÉRTÉK legördülő listában a BE, majd a Mentés lehetőséget.

    Feljegyzés

    A dinamikus kiszolgálóparaméter konfigurációjának módosítása újraindítás nélkül lesz üzembe helyezve.

  3. Ezután hozzon létre egy eseményt, csatlakozzon a rugalmas Azure Database for MySQL-kiszolgálópéldányhoz, és futtassa a következő SQL-parancsot:

    CREATE EVENT test_event_01
    ON SCHEDULE EVERY 1 MINUTE
    STARTS CURRENT_TIMESTAMP
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    COMMENT ‘Inserting record into the table tab1 with current timestamp’
    DO
    INSERT INTO tab1(id,createdAt,createdBy)
    VALUES('',NOW(),CURRENT_USER());
    
  4. Az Eseményütemező részleteinek megtekintéséhez futtassa a következő SQL-utasítást:

    SHOW EVENTS;
    

    Az alábbi kimenet jelenik meg:

    mysql> show events;
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | Db  | Name          | Definer     | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends                | Status  | Originator | character_set_client | collation_connection | Database Collation |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | db1 | test_event_01 | azureuser@% | SYSTEM    | RECURRING | NULL       | 1              | MINUTE         | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    1 row in set (0.23 sec)
    
  5. Néhány perc elteltével a tábla sorait lekérdezve megkezdheti a percenként beszúrt sorok megtekintését a event_scheduler konfigurált paraméter szerint:

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    +----+---------------------+-------------+
    4 rows in set (0.23 sec)
    
  6. Egy óra elteltével futtasson egy Select utasítást a táblán a táblázatba percenként beszúrt értékek teljes eredményének megtekintéséhez az event_scheduler esetünkben konfigurált módon.

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    |  5 | 2023-04-05 14:51:04 | azureuser@% |
    |  6 | 2023-04-05 14:52:04 | azureuser@% |
    ..< 50 lines trimmed to compact output >..
    | 56 | 2023-04-05 15:42:04 | azureuser@% |
    | 57 | 2023-04-05 15:43:04 | azureuser@% |
    | 58 | 2023-04-05 15:44:04 | azureuser@% |
    | 59 | 2023-04-05 15:45:04 | azureuser@% |
    | 60 | 2023-04-05 15:46:04 | azureuser@% |
    | 61 | 2023-04-05 15:47:04 | azureuser@% |
    +----+---------------------+-------------+
    61 rows in set (0.23 sec)
    

Egyéb forgatókönyvek

Az eseményt az adott forgatókönyv követelményei alapján állíthatja be. Néhány hasonló példa az SQL-utasítások különböző időközönként történő futtatásának ütemezésére.

Futtasson most egy SQL-utasítást, és ismételje meg naponta egyszer, befejezés nélkül

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;

SQL-utasítás futtatása óránként, vége nélkül

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;

SQL-utasítás futtatása minden nap vége nélkül

CREATE EVENT <event name>
ON SCHEDULE 
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;

Korlátozások

Magas rendelkezésre állású kiszolgálók esetén feladatátvétel esetén lehetséges, hogy a event_scheduler kiszolgálóparaméter "KI" értékre lesz állítva. Ha ez történik, a feladatátvétel befejezésekor konfigurálja a paramétert úgy, hogy az "ON" értékre legyen állítva.

Nem módosítható kiszolgálóparaméterek

Az Azure Portal kiszolgálóparaméter paneljén mind a módosítható, mind a nem módosítható kiszolgálóparaméterek láthatók. A nem módosítható kiszolgálóparaméterek szürkére vannak szürkítve. Ha nem módosítható kiszolgálóparamétert szeretne konfigurálni munkamenet szintjén, tekintse meg az Azure Portal vagy az Azure CLI cikkét a paraméter kapcsolati szinten init_connecttörténő beállításához.

Következő lépések