MySQL frissítés 5.5 -> 5.6

A napokban kellett frissítenem egy webkiszolgáló és levelezőszerver alatt dolgozó MySQL-t, 5.5-ről 5.6-ra. Egy table_cache sor eltávolítását leszámítva gördülékenyen ment minden. Legalábbis látszólag. Aztán rövid időn belül jöttek a problémák: bizonyos weboldalak kiszolgálása érezhetően lelassult. A MySQL rendesen meghajtotta a processzort, érezhető volt, hogy valamiért nagyon szenved. Egy kis Munin grafikonelemzéssel egybekötött nyomozás gyorsan fényt derített a problémára.

A MySQL 5.6 alatt (egészen pontosan az 5.6.8-as változattól kezdve) a lekérdezések gyorsítótára (Query Cache) alapértelmezés szerint ki van kapcsolva. Így ha a régi konfigurációs fájlban a query cache nincs kifejezetten engedélyezve, a frissítés után kellemetlenül érinthet minket ez a változás. A megoldás kézenfekvő: adjuk hozzá az alábbi három sort a MySQL konfigurációs fájlhoz:

query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 8M

A MySQL újraindítása után a kérdéses weboldalak villámgyorsan megjelentek, de az alábbi grafikonok bizonyítják is, hogy nem csak szubjektív érzésről van szó:

A processzorterhelés látványosan visszaesett

A rendszerterhelés úgyszintén

Újra jönnek a találatok a cache-ből

Ja, hogy most már van cache és nem üres?

Szinte minden lekérdezés a cache-ben talál hasznos eredményt

A lassú lekérdezések napjai leáldoztak

Sokat segít, ha van egy Munin vagy egy ehhez hasonló hasznos eszközünk is a fegyvertárunkban, amelynek segítségével naprakész adatokkal rendelkezünk a kiszolgálónk minden fontos paraméteréről és ezek változásáról is.