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:
- Interrompi il servizio MySQL digitando:
servizio mysqld stop cd /var/lib/mysql |
- Passa alla directory in cui si trova il database.
cd /var/lib/mysql/table_name
myisamchk
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.
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.
rm -rf
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.
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. |