Mysql
 sql >> Database >  >> RDS >> Mysql

Come risolvere i problemi comuni con il database MySQL?

Riepilogo: Questo articolo elenca alcuni degli errori comuni che potresti riscontrare quando una tabella MySQL viene danneggiata. Descrive anche le possibili ragioni alla base della corruzione della tabella del database MySQL. L'articolo spiega anche cosa puoi fare per riparare le tabelle danneggiate e come un software di riparazione del database MySQL può tornare utile per recuperare i dati all'interno della tabella e tutti gli altri oggetti del database.

Come utente di un database MySQL, potresti riscontrare uno di questi errori:

  • "Il tavolo è contrassegnato come danneggiato e deve essere riparato"
  • "La tabella si è arrestata in modo anomalo e l'ultima riparazione non è riuscita"
  • "La tabella tbl_name non esiste"
  • "File chiave errato per la tabella:'...'. Prova a ripararlo”, ecc.

Questi sono segnali di avvertimento che la tua tabella MySQL è danneggiata.

Quali sono le cause della corruzione nella tabella del database MySQL?

Di seguito sono riportati i possibili motivi che portano alla corruzione della tabella del database MySQL:

  • Problemi nella piattaforma sottostante utilizzata da MySQL, inclusi sottosistema del disco, driver, controller, ecc.
  • Arresto improvviso del sistema o arresto anomalo del server
  • Il processo MySQL viene interrotto durante la scrittura nel database
  • Bug software o guasto hardware

L'incontro con uno di questi errori di danneggiamento di MySQL può rendere inaccessibili i dati all'interno delle tabelle. Discutiamo le soluzioni per riparare le tabelle danneggiate.

Come correggere gli errori di danneggiamento del database MySQL?

Se si dispone di un backup aggiornato del database, ripristinare il database dal backup per recuperare i dati della tabella inaccessibili. Se il backup non è disponibile, esegui i passaggi nella sequenza seguente per correggere le tabelle MySQL danneggiate e recuperare i dati:

Nota: Esegui un backup del database e delle tabelle MySQL per evitare ulteriori danni durante il processo di riparazione e ripristino.

Passaggio 1:verifica la presenza di errori nella tabella

Innanzitutto, è necessario controllare la tabella del database per individuare eventuali errori di danneggiamento. Puoi utilizzare la TABELLA DI VERIFICA comando per diagnosticare tabelle InnoDB e MyISAM corrotte:

CONTROLLA TABELLA opzione tbl_name;

Qui, sostituisci "tbl_name" con il nome della tabella del database danneggiata. E sostituisci "opzione" con una di queste opzioni:RAPIDO, VELOCE, MEDIO, ESTESO e MODIFICATO.

Opzione Descrizione
VELOCE Esegue riparazioni più rapide delle tabelle InnoDB e MyISAM. Salta la scansione delle righe per cercare collegamenti errati
VELOCE Controlla solo le tabelle MyISAM che non sono state chiuse correttamente. Non si applica alle tabelle InnoDB.
MODIFICATO Controlla solo le tabelle MyISAM che non sono state chiuse dall'ultima verifica. Non si applica alle tabelle InnoDB.
MEDIO Verifica se i link eliminati sono validi scansionando le righe. Si applica solo alle tabelle MyISAM.
ESTESA Esegue una ricerca completa delle chiavi per tutte le chiavi per ogni riga della tabella MyISAM. L'esecuzione richiede molto tempo.

Per controllare più di una tabella per il danneggiamento, utilizzare il comando seguente:

CONTROLLA TABELLA tbl_name1, tbl_name2, tbl_name 3 opzione;

Nota: Il comando CHECK TABLE può essere utilizzato solo quando il processo MySQL è in esecuzione. Tuttavia, se il processo/server non è in esecuzione, puoi utilizzare il seguente comando 'myisamchk' per controllare la corruzione delle tabelle MyISAM:

myisamchk [opzioni] tbl_name …

Questo comando controlla una singola tabella.

Esegui il comando seguente per verificare la corruzione di tutte le tabelle nel database MySQL:

myisamchk /path/to/datadir/*/*.MYI

L'utilità myisamchk non funziona per le tabelle InnoDB.

Passaggio 2:ripara la tabella danneggiata

Nota: Il comando myisamchk si applica solo alle tabelle MyISAM e non funziona per le tabelle InnoDB. Per riparare e recuperare una tabella Innodb, vai al passaggio 3.

L'utilità myisamchk può anche aiutare a riparare una tabella MyISAM corrotta (danneggiata). Per utilizzare l'utilità per riparare la tabella danneggiata, procedi come segue:

  1. Interrompi il servizio MySQL digitando:
servizio mysqld stop

cd /var/lib/mysql

  1. Passa alla directory in cui si trova il database.
cd /var/lib/mysql/table_name

myisamchk

  1. Per riparare una tabella danneggiata, esegui il comando seguente sostituendo TABLE con il nome della tabella che desideri riparare:
myisamchk –recover
  1. Riavvia il tuo servizio MySQL.
service mysqld start

Passaggio 3:forza il ripristino di InnoDB

Per correggere il danneggiamento nelle tabelle InnoDB, usa 'innodb_force_recovery' opzione. Questa opzione forza l'avvio del motore di database InnoDB senza alcuna operazione in background, il che ti consente di eseguire il dump delle tabelle.

  1. Apri il tuo file di configurazione MySQL (my.cnf) e aggiungi quanto segue nella sezione [mysqld]:
[mysqld]

innodb_force_recovery=1

riavvio del servizio MySQL

Puoi avviare innodb_force_recovery con un valore di 1 e aumentare il valore, se necessario. Dopo aver avviato il ripristino di innodb, riavvia il server MySQL e quindi scarica le tabelle. Tuttavia, in alcune situazioni, potrebbe essere necessario impostare il valore da 4 a 6, il che può danneggiare i dati.

Attenzione! Se riesci a scaricare le tabelle con un valore innodb_force_recovery=3 o inferiore, puoi eseguire in sicurezza il processo di ripristino. Tuttavia, l'impostazione di innodb_force_recovery su un valore maggiore di 4 comporta il rischio di perdita di dati.

  1. Se riesci ad avviare il tuo database, esegui il seguente comando mysqldump per esportare tutti i database in un file SQL (cioè un file di backup che contiene tutte le istruzioni per ripristinare il database):
mysqldump –all-databases –add-drop-database –add-drop-table> mydump.sql
  1. Avviare il servizio MySQL, quindi tentare di eliminare il database contenente le tabelle interessate utilizzando il comando DROP DATABASE. Se non riesci a eliminare un database, prova a eliminarlo manualmente eseguendo i passaggi seguenti dopo aver arrestato il server MySQL.
cd /var/lib/mysql

rm -rf

  1. Dopo aver eseguito il comando precedente, commenta la riga sottostante in [mysqld] per disabilitare il ripristino di InnoDB:
#innodb_force_recovery=…
  1. Salva tutte le modifiche che hai apportato al file my.cnf, quindi avvia il tuo server.
service mysqld start
  1. Ripristina il database e la tabella dal dump MySQL (file di backup) che hai creato nel passaggio 2:
mysql -u utente -p

L'esecuzione di questi passaggi ripristinerà il database MySQL e le relative tabelle. Se i dati mancano ancora, dovrai utilizzare un software professionale per la riparazione del database MySQL, come Stellar Repair for MySQL per ripristinare il database e recuperare i suoi dati. Il software può riparare sia le tabelle InnoDB che MyISAM mantenendo intatti i dati. Supporta la riparazione di tabelle MySQL su sistemi Windows e Linux.

Conclusione

Le tabelle del database MySQL possono danneggiarsi a causa di arresti improvvisi del sistema, crash del server, guasti hardware, bug nel codice MySQL, ecc. La corruzione nella tabella MySQL provoca gli errori elencati in questo articolo. Puoi provare a riparare le tabelle MyISAM danneggiate utilizzando l'utilità "myisamchk" o forzare il ripristino di InnoDB. Tuttavia, potrebbe essere necessario molto tempo per riparare le tabelle MyISAM ed eseguire manualmente il ripristino di InnoDB. Inoltre, il processo di ripristino manuale può causare la perdita di dati. Un'alternativa migliore è utilizzare Stellar Repair per il software MySQL. Il software consente di riparare le tabelle del database MyISAM e InnoDB senza apportare modifiche ai dati originali.