kérelemhez

Mielőtt a hivatalos kiadás, a MySQL minden változatokat tesztelték számos platformon. Ez nem azt jelenti, hogy a MySQL nem rendelkezik hibákat, de ha van, ez nem elég, és nem olyan könnyű megtalálni. Mindenesetre, szemben a probléma, hogy mindig hasznos, hogy megpróbálja meghatározni, hogy pontosan mit összeomlik a rendszer -, akkor esélye van, hogy a probléma megoldódik a közeljövőben, jóval magasabb lesz.

Először is meg kell, hogy elszigetelje a problémát. Határozza meg, hogy mi történik: hogy mysqld démon leáll, vagy a probléma a kliens. Megtudja, milyen hosszú a mysqld szerver már fel végrehajtó mysqladmin változat. Ha mysqld megállítani a végrehajtás, akkor megtudja, miért lehet felfedezni a fájl mysql-data-directory / `hostname`.err (lásd 4.9.1 "Error Log").

A baleseteket okozhat MySQL megsérültek index és adatfájlok. MySQL frissíti az adatokat a lemezen, a rendszer használata hívás write (). miután minden SQL utasítás, és mielőtt az ügyfél értesítést kap az eredmény (ha azonban fellépett delay_key_write nem: Csak az adat íródik). Ebből következik, hogy az adatok nem befolyásolják a közúti baleset esetén mysqld. mert az operációs rendszer gondoskodik arról, hogy az adatok nem törlődik, feljegyeztük a lemezen. Rá lehet kényszeríteni MySQL dump mindent a lemez után SQL-parancs indítja mysqld a --flush.

Mindez azt jelenti, hogy a szokásos táblázatok nem sérülhet meg; kivéve az alábbi esetekben:

Valaki / valami ölni mysqld folyamat, vagy állítsa le a gépet a közepén a frissítési műveletet.

Bebizonyosodott, hogy a hiba a mysqld. okozott, hogy közepén egy frissítés.

Bárki dolgozik adatfájlok vagy indexfájlokról kívül mysqld és rögzítése nélkül a táblázatokban.

Amikor fut sok mysqld szerver azonos adatokat a rendszer nem támogatja a jó fájlrendszer zárak (általában végre démon lockd), vagy ha fut több szervert --skip-external-zár

Ott sérült index adatállomány vagy fájl, amely egy nagyon rossz adatok, amelyek félrevezetik mysqld.

Bebizonyosodott, hogy az adatrögzítés kódot. Ez nem valószínű, de általában lehetséges. Ebben az esetben, akkor próbáljon változtatni a fájl formátumból a másikba az adott kezelő adatbázis segítségével ALTER TABLE egy javított példányt az asztalra!

Mert, hogy megtalálják a hiba okát mindig nehéz, akkor először próbálja meg kideríteni, hogy az a tény, hogy a munka mások lezuhan az Ön számára. Próbálja meg a következőket:

Megáll mysqld démon keresztül MySQLadmin shutdown. kövesse myisamchk --silent --force * / *. MYI minden asztalon, és indítsa újra a mysqld démont. Ez a garancia a megfelelő kiindulási állapotban (lásd a 4. fejezetet Database Administration).

Használja mysqld --log és próbálja meghatározni, hogy az információt a naplókat, ha nem okozott megszüntetését a kiszolgáló bármely adott lekérdezés. Mintegy 95% -a az összes hibát kapcsolatos konkrét kéréseket! Általában ez az egyik utolsó lekérdezések a naplófájlban előtt MySQL újraindítása (lásd 4.9.2, „az általános lekérdezési napló”). Ha többször is megölni MySQL egyik kérése, akkor is, ha a táblák azonnal ellenőrizni, mielőtt az a megkeresés, akkor lehetséges, hogy keresse a hibát, és készítsen hibajelentést! lásd 1.8.1.3 «Hogyan jelentsd a hibákat vagy problémákat.”

Próbáld ki, hogy egy teszt, hogy tudjuk használni reprodukálni a problémát (lásd E1.6 «létrehozása egy teszt sérült tábla").

Próbálkozz a benne mysql-test test és a MySQL referenciaértékek (lásd a 9.1.2, «MySQL vizsgálati csomag"). Ezeket a vizsgálatokat kell elég jó, hogy teszteljék a MySQL. Azt is hozzá kódot a teszt, hogy szimulálja a teljesítményt az alkalmazás! A referenciaértékeket megtalálható a padon könyvtár forrás elosztás vagy, abban az esetben a bináris változatát, az alkönyvtárban sql-pad könyvtárba MySQL telepítés.

Próbálja fork_test.pl és fork2_test.pl.

Ha valami elromlik, akkor információkat gyűjt a lehetséges hibák sokkal könnyebb lesz, ha a MySQL beállításához hibakeresés. Állítsa be újra a MySQL, alkalmazása beállítani --with-debug vagy --with-debug = teljes. majd újrafordítani (lásd E.1 «Debug MySQL szerver").

MySQL beállításához debug módban bekapcsol biztonságos memóriafoglaló hogy megtalálja hibákat. Ezen túlmenően, a debug verzió ad egy csomó információt, hogy mi történik.

Tudja meg, ha a legújabb javításokat az operációs rendszert használnak.

A következő --skip-external-zár opciót mysqld. Néhány rendszeren a lockd zár menedzser nem működik megfelelően; opció --skip-external-zár megmondja mysqld nem használja a külső zár (ez azt jelenti, hogy a két szerver nem fut mysqld ugyanazon adatokat, és hogy óvatosnak kell lennie, ha a `myisamchk”. Azonban az ezzel a lehetőséggel lehet nagy előny tesztelés céljából).

Ha van olyan helyzetben, amikor úgy tűnik, hogy mysqld fut, de nem válaszol, meg kell próbálni, hogy végre MySQLadmin -u root processlist. Néha mysqld nem kómás, még ha úgy tűnik, hogy van. A probléma lehet, hogy az összes alkalmazott vegyületek, vagy talán van némi belső zár probléma. MySQLadmin processlist általában tudja, hogy egy kapcsolat még ezekben az esetekben, és hasznos információkat nyújt az aktuális kapcsolatok száma és azok állapotát.

A parancs futtatásához egy külön ablakban MySQLadmin -i 5 status vagy MySQLadmin -i 5 -r megjelenítéséhez a statisztikát, egyéb lekérdezések ig tart.

Próbálja meg a következőket:

Fuss a teszt scriptek.

Kijelző köteg (backtrace) és a helyi változókat az alsó három szinten. A gdb megteheti a következő parancsokat a baleset után mysqld gdb-n belül:

Gdb, akkor is megtudja, mik a flow (via info szál), és váltani egy adott szál szál #. ahol a # - száma az áramlás.

Próbálja meg szimulálni az alkalmazás egy Perl-szkript, ami miatt az összeomlás vagy meghibásodás MySQL.

Küldjön nekünk egy normális hibajelentést (lásd 1.8.1.3, «Hogyan jelentsd a hibákat vagy problémák"). Bármilyen további részletek felesleges lenne. Mivel a MySQL működik így sok helyen, akkor lehetséges, hogy az okozta a balesetet okozta, ami jellemző csak a számítógépre (például a hiba, amely az adott rendszer könyvtárak).

Ha problémája van, asztalokkal tartalmazó dinamikus hosszúságú sorok és oszlopok nem használt BLOB / TEXT típusú (de csak VARCHAR típusú oszlop), akkor próbálja megváltoztatni az összes VARCHAR Char ALTER TABLE. Ez arra kényszeríti a MySQL használni fix méretű húr. Vonósokra rögzített méretű kell egy kis extra helyet, de ezek sokkal kevésbé hajlamos a sérülésre! Jelenlegi dinamikus sor kód minden gond nélkül működött a MySQL AB legalább 3 év, de a hossza a dinamikus vonal, elvileg hajlamosabbak a hibákat, így ez a recept lehet, hogy te, hogy tegyen valamit, hogy segítsen!

Kapcsolódó cikkek