Quando un database MySQL diventa corrotto, potresti chiederti perché il database è stato danneggiato in primo luogo. Questo post illustrerà le possibili ragioni alla base del danneggiamento del database prima di rispondere alla domanda:come riparare un database MySQL corrotto?
Ragioni alla base della corruzione del database MySQL
Un database MySQL può essere danneggiato a causa di uno di questi motivi:
- Spegnimento improvviso del server
- Difetto nell'hardware utilizzato per archiviare e recuperare dati come sottosistema del disco, controller del disco, driver, ecc.
- Il processo "mysqld" viene interrotto mentre è in corso un aggiornamento in corso
- Blocco software
Può essere difficile individuare la causa di un database danneggiato. Qualunque sia la causa, la preoccupazione che dovresti avere è come riparare il database MySQL corrotto.
Come riparare il database MySQL danneggiato?
La prima cosa che devi guardare è il messaggio di errore che ricevi. Di seguito sono riportati alcuni messaggi di errore che potresti incontrare quando il database MySQL viene danneggiato:
Errore 144: La tabella si è arrestata in modo anomalo e l'ultima riparazione non è riuscita
Errore 141: Chiave univoca duplicata o vincolo in scrittura o aggiornamento
Errore 136: Non c'è più spazio nel file di indice
Errore 134: Il record è stato già eliminato
Errore 126: Il file di indice è andato in crash/formato di file errato
Errore: Impossibile trovare il file "wtlicensemanager.dll"
Se vuoi eseguire la riparazione gratuitamente, hai due opzioni:
- Fallo manualmente.
- Fallo con l'aiuto del software utilizzando il periodo di prova.
Un software di ripristino del database può fare un lavoro migliore e più veloce nel riparare il database danneggiato.
Ecco un'applicazione software che puoi utilizzare per riparare il database MySQL danneggiato:
Questo strumento di riparazione del database MySQL ripara il database creato utilizzando i motori di database InnoDB e MyISAM di MySQL. È possibile scaricare la versione demo dello strumento di riparazione SQL per visualizzare in anteprima il database recuperabile prima di salvarlo.
Caratteristiche principali:
- Può recuperare database MySQL su sistemi Windows e Linux.
- Recupera i file InnoDB (.ibdata, .ibd e .frm) e i file MyISAM (myd, .myi e .frm)
- Ripristina oggetti di database come tabelle, proprietà di tabelle, tipi di dati, viste, trigger, ecc.
- Consente il ripristino selettivo dei componenti del database
Come riparare manualmente il database MySQL danneggiato?
Esistono due tipi di motori di archiviazione in MySQL:InnoDB e MyISAM. La tabella InnoDB contiene file FRM, IBDATA e IDB, mentre la tabella MyISAM contiene file FRM, MYD e MYI.
Prima di procedere
Ecco alcune cose che dovresti considerare prima di tentare il ripristino manuale:
- Non riavviare il server
Quando si riavvia il server, il server può mettere il database danneggiato in modalità sospetta. Questo disattiverà il database. Può anche creare errori durante la connessione al database. Dovresti tentare il ripristino senza riavviare il server.
- Utilizza la modalità Utente singolo
Assicurati di essere l'unico utente connesso al database. La modalità utente singolo ti offre il controllo completo, eliminando le interferenze di altri utenti.
- Non aggiornare MySQL
Potresti pensare di aggiornare il database MySQL per riparare i file danneggiati. Ma questo non è il caso. L'aggiornamento può causare la perdita permanente dei dati.
- Fai il backup del database MySQL danneggiato
È importante avere un backup del file danneggiato poiché potrebbero esserci errori che possono causare la perdita di dati. Non vi è alcuna garanzia che i passaggi manuali non influiscano sui file integri. Quindi è sicuro avere un backup prima di tentare il ripristino manuale.
Per eseguire il backup, utilizzare il seguente comando:
mysqldump db_name> database_name.sql
Basta inserire il nome del database al posto di database_name.
Se quanto sopra non funziona, prova quanto segue:
mysqldump –u[nome utente] –p[password] [nome_database]> [file_dump].sql
C'è un altro modo per eseguire il backup del database:
servizio mysqld fermo
cp -r /var/lib/mysql /var/lib/mysql_bkp
Ora che abbiamo il backup, possiamo tentare di riparare il database MySQL corrotto.
Come recuperare manualmente il database MySQL?
Riparazione del database MyISAM
Se stai utilizzando il motore di archiviazione del database MyISAM per la tabella del database, puoi utilizzare i seguenti comandi per riparare la tabella:
Mysqlcheck
Se il tuo server MySQL è in esecuzione, esegui il seguente comando mysqlcheck per riparare la tua tabella:
mysqlcheck -r [nome_database]
Assicurati di sostituire "database_name" con il nome del tuo database.
Myisamchk
Se il server non è in esecuzione, prova a riparare la tabella del database utilizzando il comando myisamchk:
Nota: Prima di eseguire questo comando, assicurati che il server non abbia tabelle aperte.
myisamchk nome_tabella
Ripara il nome della tabella con il nome della tabella nel tuo caso. Questo comando corregge automaticamente la tua tabella.
Per riavviare il server, digita quanto segue:
servizio mysqld start
Forza il ripristino di InnoDB
Dovrai eseguire il ripristino forzato di InnoDB per estrarre i dati da una tabella di database InnoDB danneggiata.
Passaggio 1: Innanzitutto, devi aprire il file my.cnf.
In questo file, individua la sezione [mysqld].
Aggiungi la seguente riga a questa sezione:
innodb_force_recovery=1
Ora salva il file di configurazione e riavvia il server MySQL. Puoi impostare il valore di innodb_force_recovery da 1 a 6. Tuttavia, un valore superiore a 4 non è consigliato, poiché può danneggiare i dati.
Passaggio 2: Scarica i dati della tabella in un nuovo file.
Per farlo, usa il seguente comando:
mysqldump –u utente –p db_name nome_tabella> single_dbtable_dump.sql
Passaggio 3: Elimina la tabella danneggiata dal database.
mysql –u utente –p –execute=”DROP TABLE db_name.table_name”
Passaggio 4: Ripristina la tabella dal file di dump.
mysql –u utente –p
Passaggio 5: Una volta riparati i file, disabilita la modalità di ripristino forzato con il seguente comando:
#innodb_force_recovery=…
Ora puoi riavviare il servizio MySQL in modalità normale.
Ci auguriamo che i metodi di cui sopra ti aiutino a riparare il database MySQL corrotto.