Shrnutí: Tento článek uvádí některé běžné chyby, se kterými se můžete setkat, když dojde k poškození tabulky MySQL. Nastiňuje také možné důvody poškození tabulky databáze MySQL. Článek také vysvětluje, co můžete udělat pro opravu poškozených tabulek a jak se může hodit software na opravu databáze MySQL k obnově dat v tabulce a všech ostatních databázových objektů.
Jako uživatel databáze MySQL se můžete setkat s některou z těchto chyb:
- „Tabulka je označena jako havarovaná a měla by být opravena“
- „Tabulka se zhroutila a poslední oprava se nezdařila“
- „Tabulka tbl_name neexistuje“
- „Nesprávný soubor klíče pro tabulku:‚…‘. Zkuste to opravit“ atd.
Toto jsou varovné signály, že vaše tabulka MySQL je poškozená.
Co způsobuje poškození v tabulce databáze MySQL?
Níže jsou uvedeny možné důvody vedoucí k poškození tabulky databáze MySQL:
- Problémy v základní platformě používané MySQL, včetně diskového subsystému, ovladačů, řadičů atd.
- Náhlé vypnutí systému nebo selhání serveru
- Proces MySQL se zastaví uprostřed zápisu do databáze
- Softwarová chyba nebo selhání hardwaru
Setkání s některou z těchto chyb poškození MySQL může způsobit, že data v tabulkách nebudou přístupná. Pojďme diskutovat o řešeních, jak opravit poškozené tabulky.
Jak opravit chyby způsobené poškozením databáze MySQL?
Pokud máte aktualizovanou zálohu databáze, obnovte databázi ze zálohy, abyste obnovili nepřístupná data tabulky. Pokud záloha není k dispozici, opravte poškozené tabulky MySQL a obnovte data provedením kroků v následujícím pořadí:
Poznámka: Udělejte si zálohu databáze a tabulek MySQL, abyste zabránili dalšímu poškození během procesu opravy a obnovy.
Krok 1:Zkontrolujte, zda v tabulce není chyba
Nejprve musíte zkontrolovat databázovou tabulku, zda neobsahuje chyby poškození. Můžete použít KONTROLNÍ TABULKU příkaz k diagnostice poškozených tabulek InnoDB a MyISAM:
ZKONTROLOVAT TABULKU možnost tbl_name; |
Zde nahraďte „tbl_name“ názvem poškozené databázové tabulky. A nahraďte „možnost“ kteroukoli z těchto možností:RYCHLÝ, RYCHLÝ, STŘEDNÍ, ROZŠÍŘENÝ a ZMĚNĚNÝ.
Možnost | Popis |
RYCHLÉ | Provádí rychlejší opravu tabulek InnoDB a MyISAM. Přeskočí skenování řádků za účelem hledání nesprávných odkazů |
RYCHLE | Zkontrolujte pouze tabulky MyISAM, které nebyly správně uzavřeny. Neaplikujte na tabulky InnoDB. |
ZMĚNĚNO | Zkontrolujte pouze tabulky MyISAM, které nebyly uzavřeny od poslední kontroly. Neaplikujte na tabulky InnoDB. |
STŘEDNÍ | Prohledáním řádků ověřte, zda jsou smazané odkazy platné. Platí pouze pro tabulky MyISAM. |
ROZŠÍŘENÉ | Provede úplné vyhledání klíčů pro všechny klíče pro každý řádek tabulky MyISAM. Spuštění trvá dlouho. |
Chcete-li zkontrolovat poškození více než jedné tabulky, použijte následující příkaz:
ZKONTROLUJTE TABULKU název_tbl1, název_tbl2, název_tbl 3 možnost; |
Poznámka: Příkaz CHECK TABLE lze použít pouze při spuštěném procesu MySQL. Pokud však proces/server neběží, můžete pomocí následujícího příkazu „myisamchk“ zkontrolovat, zda tabulky MyISAM nejsou poškozené:
myisamchk [volby] tbl_name …
Tento příkaz kontroluje jednu tabulku.
Chcete-li zkontrolovat všechny tabulky v databázi MySQL, zda nejsou poškozené, spusťte následující příkaz:
myisamchk /cesta/k/datadir/*/*.MYI
Nástroj myisamchk nefunguje pro tabulky InnoDB.
Krok 2:Opravte poškozenou tabulku
Poznámka: Příkaz myisamchk se vztahuje pouze na tabulky MyISAM a nefunguje pro tabulky InnoDB. Chcete-li opravit a obnovit tabulku Innodb, přejděte ke kroku 3.
Nástroj myisamchk může také pomoci opravit poškozenou (poškozenou) tabulku MyISAM. Chcete-li použít nástroj k opravě poškozené tabulky, postupujte takto:
- Zastavte službu MySQL zadáním:
zastavení služby mysqld cd /var/lib/mysql |
- Přejděte do adresáře, kde se nachází databáze.
cd /var/lib/mysql/název_tabulky
myisamchk
Chcete-li opravit poškození v tabulkách InnoDB, použijte ‘innodb_force_recovery‘ volba. Tato možnost přinutí databázový stroj InnoDB, aby se spustil bez jakýchkoli operací na pozadí, což vám umožní vypsat vaše tabulky.
innodb_force_recovery=1
restart služby mysql
Můžete spustit innodb_force_recovery s hodnotou 1 a podle potřeby hodnotu zvýšit. Jakmile spustíte obnovu innodb, restartujte server MySQL a poté vypište tabulky. V některých situacích však může být nutné nastavit hodnotu na 4 až 6, což může poškodit data.
Pozor! Pokud jste schopni vypsat tabulky s hodnotou innodb_force_recovery=3 nebo nižší, můžete proces obnovy bezpečně provést. Nastavení innodb_force_recovery na hodnotu vyšší než 4 však zahrnuje riziko ztráty dat.
rm -rf
Provedením těchto kroků obnovíte databázi MySQL a její tabulky. Pokud data stále chybí, budete muset použít profesionální software pro opravu databáze MySQL, jako je Stellar Repair for MySQL obnovit databázi a obnovit její data. Software dokáže opravit tabulky InnoDB i MyISAM, přičemž data zůstanou nedotčená. Podporuje opravu tabulek MySQL v systémech Windows i Linux.
Tabulky databáze MySQL se mohou poškodit v důsledku náhlého vypnutí systému, selhání serveru, selhání hardwaru, chyb v kódu MySQL atd. Poškození v tabulce MySQL má za následek chyby uvedené v tomto článku. Můžete se pokusit opravit poškozené tabulky MyISAM pomocí nástroje „myisamchk“ nebo vynutit obnovu InnoDB. Oprava tabulek MyISAM a ruční obnovení InnoDB však může trvat značnou dobu. Ruční proces obnovy může také vést ke ztrátě dat. Lepší alternativou je použití softwaru Stellar Repair pro MySQL. Software umožňuje opravu databázových tabulek MyISAM i InnoDB bez jakýchkoli změn v původních datech. |