Torna al blog

Soluzioni rapide per riparare tabelle corrotte in MySQL: un tutorial

Soluzioni rapide per riparare tabelle corrotte in MySQL: un tutorial

MySQL è uno dei più popolari open-source RDBMS (Relational Database Management Systems). È parte integrante della crescita rapida dello LAMP Stack e ha ottenuto un notevole seguito tra sviluppatori e amministratori di sistema. Rispetto ai database non relazionali, SQL offre eccellenti funzionalità per organizzare, memorizzare e gestire i dati in modo efficace. Le particolari funzionalità di disposizione delle tabelle e le straordinarie capacità del database SQL lo rendono una scelta preferita a tutti i livelli dell'organizzazione, sia grandi che piccole.

Le tabelle MySQL possono danneggiarsi in rare occasioni, indicando che si è verificato un tale errore e che i dati memorizzati al loro interno sono illeggibili. Quando si tenta di leggere i dati da una tabella corrotta, il server si arresta in modo anomalo e restituisce un errore o un elenco di errori.

Potenziali motivi alla base della corruzione delle tabelle MySQL

Di seguito sono riportati alcuni dei motivi più tipici delle tabelle corrotte:

  • Il servizio MySQL si arresta in modo anomalo dopo il riavvio.
  • La macchina si spegne inaspettatamente a causa di un'interruzione di corrente.
  • Memoria difettosa o guasto hardware.
  • Bug software nel OS o nel codice SQL.
  • MySQL si spegne durante la scrittura.
  • Il sistema si spegne OFF durante l'aggiornamento di SQL.

Prima di riparare una tabella che si sospetta sia corrotta, crea un backup della directory delle informazioni. Questo aiuterà a ridurre la probabilità di perdita di dati. In questa guida rapida, ti guideremo attraverso i passaggi di risoluzione dei problemi per riparare le tabelle corrotte in MySQL.

Prerequisiti

Per seguire questo tutorial, avrai bisogno di quanto segue:

Passo 1: Arrestare il servizio MySQL e backup dei dati

Inizialmente, arresta il servizio MySQL utilizzando il comando systemctl comando:

Dopo aver arrestato il servizio SQL, il passo successivo consiste nel creare backup di tutti i file esistenti in una nuova directory. Utilizza la directory dei dati predefinita di Ubuntu /var/lib/mysql/ per copiare tutti i dati di sistema:

Passo 2: Identificare l'errore

Successivamente, avvieremo la nostra indagine e identificheremo la tabella corrotta. Se la tabella utilizza il motore di archiviazione MyISAM, utilizza l'istruzione CHECK TABLE e verifica lo stato della tabella:

Vedrai un messaggio come output che conferma la tabella o le tabelle corrotte.

Passo 3: Riparare la tabella corrotta

Se si verifica un errore sulla tabella MyISAM e l'hai identificata, utilizza l'istruzione REPAIR TABLE per correggere l'errore:

Se la riparazione è andata a buon fine, dovresti vedere il seguente messaggio privo di errori come output:

Tuttavia, se riscontri che l'errore si ripresenta, segui il documento ufficiale di MySQL versione 8.0 per ricostruire o riparare le tabelle.

A differenza del motore di archiviazione MyISAM, il processo InnoDB coinvolto nella riparazione delle tabelle è diverso nel motore di archiviazione InnoDB. InnoDB è il motore di archiviazione predefinito in MySQL 8.0. Dispone di operazioni automatizzate di controllo e riparazione della corruzione. Il MySQL InnoDB controlla la presenza di pagine corrotte eseguendo checksum su ogni pagina che legge. Se viene rilevata una discrepanza, arresterà automaticamente il server MySQL.

In conclusione, raramente è necessario riparare le tabelle InnoDB. InnoDB dispone di un meccanismo di ripristino da crash in grado di risolvere la maggior parte dei problemi tramite un riavvio.

Prova a riavviare il servizio MySQL per vedere se riesci ad accedere al server:

Se non riesci a ricostruire una tabella InnoDB corrotta anche dopo il riavvio, prova il metodo “Dump and Reload” suggerito nella documentazione di MySQL. Questo metodo prevede di riottenere l'accesso alla tabella corrotta, utilizzando l'utility mysqldump. È necessario creare una cartella per memorizzare e conservare il backup logico della tabella. Una volta risolto l'errore, la tabella viene ricaricata nel database.

Passo 4: Sfrutta l'opzione innodb_force_recovery

Se il server rimane in crash o non è raggiungibile, prova a utilizzare l'opzione force_recovery in InnoDB. Impostare su ON l'opzione force_recovery è un ottimo modo per ripristinare i database MySQL. Puoi abilitare questa opzione modificando il file mysqld.cnf nell'editor di testo nano:

Inserisci la seguente riga sotto la sezione [mysqld]:

innodb force recovery

Salva e chiudi il file dopo aver riavviato il servizio MySQL.

Passo 5: Crea un file mysqldump

Se riesci ad accedere alla tabella corrotta, usa l'opzione mysqldump per inserire tutti i dump nel nuovo file. Nomina il nuovo file come preferisci e assicurati di aggiungere l'estensione .sql alla fine. Qui stiamo nominando il file come demo.sql:

Successivamente, usa la query DROP TABLE per rimuovere la tabella dal database. Puoi utilizzare la seguente sintassi per evitare di dover riaprire il prompt di MySQL:

Quindi, utilizzando il documento di dump demo.sql appena preparato, ripristina la tabella:

Hai corretto con successo la tua tabella MySQL corrotta e sei pronto a lavorare con il database senza problemi.

Conclusione

La corruzione delle tabelle o i crash imprevisti del sistema possono verificarsi se si lavora con un grande volume di dati. Vale la pena menzionare che il motore di archiviazione MySQL InnoDB è più tollerante ai guasti rispetto al precedente motore MyISAM. Le tabelle che utilizzano il motore di archiviazione InnoDB possono comunque corrompersi, anche se il pericolo di corruzione delle tabelle e di guasti è notevolmente ridotto grazie alle sue funzionalità di ripristino automatico.

Infine, ci sono molti argomenti e tutorial sui database che puoi esplorare sul nostro blog:

Buon lavoro!

author

Akshay Nagpal

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.