sql >> Databáze >  >> RDS >> Mysql

Bezplatné metody pro opravu poškozené databáze MySQL

Když se databáze MySQL poškodí, možná se divíte, proč se databáze poškodila. Tento příspěvek nastíní možné důvody poškození databáze, než odpoví na otázku:jak opravit poškozenou databázi MySQL?

Důvody korupce databáze MySQL

Databáze MySQL se může poškodit z některého z těchto důvodů:

  • Náhlé vypnutí serveru
  • Závada v hardwaru používaném k ukládání a načítání dat, jako je diskový subsystém, řadiče disků, ovladače atd.
  • Proces ‘mysqld’ je ukončen, zatímco probíhá probíhající aktualizace
  • Softwarová chyba

Může být náročné určit příčinu poškozené databáze. Ať už může být příčina jakákoli, měli byste se zajímat o to, jak opravit poškozenou databázi MySQL.

Jak opravit poškozenou databázi MySQL?

První věc, na kterou se musíte podívat, je chybová zpráva, kterou dostanete. Níže jsou uvedeny některé chybové zprávy, se kterými se můžete setkat, když dojde k poškození databáze MySQL:

Chyba 144: Tabulka se zhroutila a poslední oprava se nezdařila

Chyba 141: Duplicitní jedinečný klíč nebo omezení pro zápis nebo aktualizaci

Chyba 136: V indexovém souboru už není místo

Chyba 134: Záznam již byl smazán

Chyba 126: Indexový soubor se zhroutil/nesprávný formát souboru

Chyba: Nelze najít soubor ‚wtlicensemanager.dll‘

Pokud chcete provést opravu zdarma, máte dvě možnosti:

  1. Proveďte to ručně.
  2. Udělejte to pomocí softwaru ve zkušební době.

Software pro obnovu databáze může udělat lepší a rychlejší práci při opravě poškozené databáze.

Zde je jedna softwarová aplikace, kterou můžete použít k opravě poškozené databáze MySQL:

Tento nástroj pro opravu databáze MySQL opravuje databázi vytvořenou pomocí databázových strojů InnoDB a MyISAM MySQL. Před uložením si můžete stáhnout demo verzi nástroje pro opravu SQL a zobrazit náhled obnovitelné databáze.

Klíčové vlastnosti:

  • Lze obnovit databázi MySQL v systémech Windows a Linux.
  • Obnovuje soubory InnoDB (.ibdata, .ibd a .frm) a soubory MyISAM (myd, .myi a .frm)
  • Obnovuje databázové objekty, jako jsou tabulky, vlastnosti tabulek, datové typy, pohledy, spouštěče atd.
  • Umožňuje selektivní obnovu databázových komponent

Jak ručně opravit poškozenou databázi MySQL?

V MySQL existují dva typy úložišť:InnoDB a MyISAM. Tabulka InnoDB obsahuje soubory FRM, IBDATA a IDB, zatímco tabulka MyISAM obsahuje soubory FRM, MYD a MYI.

Než budeme pokračovat

Zde je několik věcí, které byste měli zvážit, než se pokusíte o ruční obnovení:

  • Nerestartujte server

Když restartujete server, může server uvést poškozenou databázi do podezřelého režimu. Tím se databáze vypne. Může také vytvářet chyby při připojování k databázi. Měli byste se pokusit o obnovu bez restartování serveru.

  • Používejte režim jednoho uživatele

Ujistěte se, že jste jediným uživatelem připojeným k databázi. Režim pro jednoho uživatele vám poskytuje veškerou kontrolu a eliminuje rušení ostatních uživatelů.

  • Neupgradujte MySQL

Možná vás napadne aktualizovat databázi MySQL, abyste opravili poškozené soubory. Ale není tomu tak. Upgrade může způsobit trvalou ztrátu dat.

  • Proveďte zálohu poškozené databáze MySQL

Je důležité mít zálohu poškozeného souboru, protože může dojít k chybám, které mohou způsobit ztrátu dat. Neexistuje žádná záruka, že vaše ruční kroky neovlivní zdravé soubory. Před pokusem o ruční obnovení je tedy bezpečné mít zálohu.

Pro zálohování použijte následující příkaz:

mysqldump název_db> název_databáze.sql

Stačí zadat název databáze místo názvu databáze.

Pokud výše uvedené nefunguje, zkuste následující:

mysqldump –u[username] –p[heslo] [název_databáze]> [dump_file].sql 

Existuje další způsob, jak zálohovat databázi:

zastavení služby mysqld

cp -r /var/lib/mysql /var/lib/mysql_bkp

Nyní, když máme zálohu, můžeme se pokusit opravit poškozenou databázi MySQL.

Jak ručně obnovit databázi MySQL?

Oprava databáze MyISAM

Pokud pro svou databázovou tabulku používáte databázové úložiště MyISAM, můžete tabulku opravit pomocí následujících příkazů:

Mysqlcheck

Pokud váš server MySQL běží, opravte tabulku spuštěním následujícího příkazu mysqlcheck:

mysqlcheck -r [název_databáze]

Nezapomeňte nahradit ‘database_name’ názvem vaší databáze.

Myisamchk

Pokud server neběží, zkuste opravit databázovou tabulku pomocí příkazu myisamchk:

Poznámka: Před spuštěním tohoto příkazu se ujistěte, že server nemá otevřené žádné tabulky.

myisamchk název_tabulky

Opravte název tabulky názvem tabulky ve vašem případě. Tento příkaz automaticky opraví vaši tabulku.

Chcete-li restartovat server, zadejte následující:

spuštění služby mysqld

Vynutit obnovu InnoDB

Chcete-li extrahovat data z poškozené databázové tabulky InnoDB, budete muset provést vynucenou obnovu InnoDB.

Krok 1: Nejprve musíte otevřít soubor my.cnf.

V tomto souboru vyhledejte sekci [mysqld].

Přidejte do této sekce následující řádek:

innodb_force_recovery=1

Nyní uložte konfigurační soubor a restartujte MySQL server. Hodnotu innodb_force_recovery můžete nastavit od 1 do 6. Hodnota vyšší než 4 se však nedoporučuje, protože může poškodit data.

Krok 2: Uložte data tabulky do nového souboru.

Chcete-li to provést, použijte následující příkaz:

mysqldump –u user –p db_name table_name> single_dbtable_dump.sql

Krok 3: Odstraňte poškozenou tabulku z databáze.

mysql –u user –p –execute=”DROP TABLE název_db.název_tabulky”

Krok 4: Obnovte tabulku ze souboru výpisu.

mysql –u user –p

Krok 5: Jakmile budou soubory opraveny, deaktivujte režim vynucení obnovy pomocí následujícího příkazu:

#innodb_force_recovery=…

Nyní můžete restartovat službu MySQL v normálním režimu.

Doufáme, že výše uvedené metody vám pomohou opravit poškozenou databázi MySQL.


  1. CHYBA:Načítání místních dat je zakázáno – toto musí být povoleno na straně klienta i serveru

  2. Jak vytvořit uživatele s PSQL

  3. Nakonfigurujte odesílání protokolu SQL Server

  4. Dotaz, který vrací hierarchický seznam typů událostí spouštění na serveru SQL