Home » Howto, Linux, Sistemistica

MySQL – Riparare tabelle corrotte

5 febbraio 2010 512 views 11 Comments

Logo di MySQLChi usa MySQL deve sapere che i server che utilizzano per la gestione dei database possono subire, nel corso del tempo, down e  problemi sui dischi.

Le cause sono le più disparate ma, quella più gettonata (specie chi acquista una VPS di basso livello e con poco spazio disco), è la terminazione dello spazio sulla partizione di MySQL (in genere la /var).

Oltre a tutti i problemi (scrittura logs, down dei servizi, etc.) è quasi inevitabile che alcune tabelle dei database, rimaste aperte da processi attivi nel momento stesso della saturazione del disco, vengano corrotte.

Se le tabelle sono in INNODB, allora bisogna solo recuperarle da un backup. Se invece il motore utilizzato è MyISAM, allora possiamo tentare (il più delle volte ci si riesce) un recovery della stessa tabella.

Il primo passo da effettuare (naturalmente dopo aver liberato spazio disco), è quello di eseguire il seguente comando con il servizio MySQL attivo:

mysqlcheck nome_database -c -r

Sostituendo nome_database con il nome del vostro database.

Se avete molti database e non sapete quali siano effettivamente corrotti, possiamo usare lo stesso comando con opzioni diverse per fare il repair su tutti i database del server:

mysqlcheck -A -r

Se in questo modo non si riesce a riparare la tabella, allora possiamo adottare un’altra tecnica.

Ipotizziamo che:

  • La cartella dei database di MySQL è /var/lib/mysql/
  • Il database con la tabella corrotta si chiami mio_db
  • La tabella corrotta si chiami mia_tabella

Allora possiamo stoppare MySQL ed entrare nella cartella fisica del database, dove troviamo per ogni tabella il suo equivalente file .MYI.

Da qui possiamo effettuare un repair a freddo:

cd /var/lib/mysql/mio_db ; myisamchk -r mia_tabella.MYI

Il tempo di repair dipende dalla grandezza della tabella.

Ora possiamo avviare di nuovo MySQL e vedere se la tabella è stata recuperata effettivamente.

11 Comments »

  • www.upnews.it said:

    MySQL – Riparare tabelle corrotte | blog.morphey.org…

    Come facciamo a riparare delle tabelle MySQL corrotte? Ecco la risposta in una piccola e pratica guida….

  • M0rF3uS said:

    Ho come l’impressione che questo commento sia spam allo stado brado :D

  • morphey (author) said:

    Direi di si, mi è sfuggita la mail :) sono tornato ieri dalle ferie :)

  • M0rF3uS said:

    Capita, io ci devo andare il 13 e sto contando i minuti :D ‘gna faccio più eheheh

  • morphey (author) said:

    io sono tornato domenica da un viaggio fantastico un puglia….il 13 rivado in ferie fino al 22 :)

  • M0rF3uS said:

    Visto che oramai siamo palesemente ot continuiamo va :D io dal 13 evaporo fino al 31 me ne torno in calabria la mai terra natìa, sperando di non beccare il maltempo perchè le previsioni minacciano vendetta da dopo ferragosto :/ La puglia è bellissima dove sei stato?

  • morphey (author) said:

    ahahah :D sono stato tra Peschici e Vieste, in un residence a metà strada….bella la calabria, io sono stato l’anno scorso a Brancaleone…piccola e rilassante cittadina nella punta estrema….sono stato benissimo

  • M0rF3uS said:

    Bella brancaleone vero? :D io sto a reggio calabria ma mi muovo in continuazione verso scilla sul tirreno oppure condofuri sullo jonio (un bel pò prima di brancaleone ma sulla stessa strada) in particolare a condofuri c’è una spiaggia immensa ed un mare cristallino, già sto sbavando *_*

  • morphey (author) said:

    beato a te :°°°
    io se riesco voglio portare la raga mia la settimana delle ferie di agosto a Eurodisney a Parigi…. :°°

  • M0rF3uS said:

    Non ci sono mai stato ma la mia ragazza ci è andata da piccola, dice che è un esperienza che ti rimane in testa per sempre, deve essere favoloso. Te lo auguro :D
    ps. ti scrivo una mail per una roba, mi manda federico quindi prenditela con lui lol.

  • morphey (author) said:

    si si è bellissimo, ci sono stato diverse volte…ora voglio donare anche alla mia girl questa esperienza bellissima….
    Per la mail manda pure :)

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.