Quando si esegue il database MySQL su una macchina Linux, il database può danneggiarsi per diversi motivi, come l’attacco di virus sulla macchina, un guasto hardware, ecc. Si può provare a ripristinare il database da un backup aggiornato. Tuttavia, se il backup non è disponibile, si può provare a riparare il database MySQL.
Metodi per riparare il database MySQL in Linux
Metodo 1 – Riparazione manuale del database MySQL
Nota: l’approccio manuale alla riparazione del database MySQL può variare a seconda del motore di archiviazione utilizzato: InnoDB o MyISAM. Pertanto, la risoluzione dei problemi di danneggiamento del database attraverso l’esecuzione di diversi passaggi manuali richiede tempo, aumentando il tempo di inattività del database. Utilizzate uno strumento di riparazione del database MySQL per riparare rapidamente il database danneggiato e ripristinarlo nella forma originale.
In questa sede, discuteremo il processo passo-passo per riparare un database MySQL corrotto su un sistema basato su Linux:
Passo 1: Eseguire il backup del database
Assicurarsi di eseguire il backup del database prima di tentare di ripararlo. In questo modo si eviterà un’ulteriore perdita del database. Per eseguire il backup dei file del database MySQL, procedere come segue:
1 Accedere al server tramite SSH
2. Arrestate il server MySQL utilizzando uno dei seguenti comandi in base alla vostra distribuzione Linux:
Per CentOS e Fedora, inserire:
Per Ubuntu e Debian, inserire:
3. Per eseguire il backup del file del database, digitare:
cp -r /var/lib/mysql /var/lib/mysql_backup |
4. Riavviate il server MySQL eseguendo il seguente comando nel vostro sistema Linux:
Passo 2: Eseguire “mysqlcheck” per controllare e riparare i database MySQL
Nota: Il comando mysqlcheck è utile per gli utenti che desiderano riparare il database e le tabelle MySQL senza arrestare il servizio MySQL.
Una volta eseguito il backup dei database, eseguire il comando mysqlcheck per controllare e riparare il database e le tabelle per i motori di database MyISAM o InnoDB. Seguite questi passaggi per usare mysqlcheck per riparare il database:
1. Come utente root, immettere il comando seguente:
2. Controllate che il database e tutte le sue tabelle non siano danneggiate digitando il comando:
Per verificare la presenza di errori in una specifica tabella del database, digitate il comando:
mysqlcheck nome_database nome_tabella |
3. Se la tabella non è danneggiata, viene visualizzato un messaggio di OK. Tuttavia, se la tabella del database presenta errori, è necessario ripararla con il seguente comando:
mysqlcheck -r nome_database nome_tabella |
Se l’esecuzione del comando mysqlcheck non risolve il problema, passate al passo successivo.
Fase 3: Esecuzione della diagnostica specifica del motore
Eseguire la diagnostica specifica del motore di archiviazione (InnoDB o MyISAM) utilizzato dal database e dalle tabelle. Seguire la procedura appropriata per il motore di archiviazione del database della tabella.
Riparazione delle tabelle MyISAM con myisamchk
Quando il database viene eseguito sul motore di archiviazione MyISAM, eseguire il comando myisamchk per ripararlo. Per farlo, seguire i seguenti passaggi:
Nota: Il comando myisamchk funziona solo per il motore di archiviazione MyISAM.
1. Arrestare il server utilizzando uno dei seguenti comandi per la propria distribuzione Linux:
Per CentOS e Fedora, utilizzare:
Per Debian e Ubuntu, utilizzare:
2. Digitare quanto segue:
Cambiare la directory di cui sopra con la directory in cui si trova il database danneggiato. Ad esempio, se il database si chiama db1, digitate cd db1.
3. Controllate le tabelle corrotte nel database, utilizzando il seguente comando:
Per controllare tutte le tabelle del database, digitate il seguente comando:
4. Una volta identificate le tabelle danneggiate nel database, utilizzate il comando mysqlchk per riparare le tabelle seguendo questo comando:
myisamchk -recupera tabella |
5. Riavviare il server:
Per CentOS e Fedora, digitare:
Per Debian e Ubuntu, digitare:
avviare il servizio mysql |
Esecuzione del processo di ripristino InnoDB
Per riparare il db in esecuzione sul motore di archiviazione InnoDB, procedere come segue:
- Aprire il file di configurazione di MySQL “my.cnf”. La posizione del file my.cnf varia a seconda del sistema operativo Linux. Su CentOS e Fedora, il file si trova nella directory ‘/etc’. Su Debian e Ubuntu, il file di configurazione si trova nella directory ‘/etc/mysql’.
- Una volta individuato il file my.cnf, trovare la sezione [mysqld].
- Nella sezione [mysqld], aggiungere la seguente riga:
4. Salvate le modifiche al file di configurazione di MySQL e riavviate il server MySQL:
Per CentOS e Fedora:
Per Debian e Ubuntu:
servizio di riavvio di mysql |
5. Eseguire il comando seguente per esportare tutti i database nel file databasesbkp.sql:
mysqldump -tutti i database > databasesbkp.sql |
6. Avviare il servizio mysql, quindi utilizzare il comando DROP DATABASE per cercare di eliminare il database interessato.
Nota: se non si riesce a eliminare un database, cancellarlo manualmente dopo aver arrestato il server MySQL.
7. Arrestare il server MySQL.
8. Digitare il seguente comando per eliminare manualmente il database:
cd /var/lib/mysql rm -rf database |
Sostituire “database” con il nome del database che si desidera riparare.
9. Aprire nuovamente il file my.cnf e commentare la riga seguente:
Questo disabilita la modalità di recupero InnoDB.
10. Salvate le modifiche apportate al file my.cnf e poi avviate il server MySQL.
11. Provate a ripristinare il database dal backup creato al punto 5:
Ora controllate il database ripristinato. Se il problema persiste, utilizzate un software specializzato nella riparazione dei database MySQL per ripristinare il database.
Metodo 2 – Riparazione del database MySQL con Stellar Repair for MySQL
Stellar Repair for MySQL è un potente software di riparazione di database MySQL raccomandato dai DBA per riparare database gravemente danneggiati e ripristinare tutti i suoi oggetti. Il software consente di riparare il database MySQL sia su Linux che su Windows.
Per riparare un database MySQL danneggiato creato su un sistema Linux, procedete come segue:
Passo 1: Scaricare e installare il software. Per l’installazione del software, aprire il terminale Linux e inserire il seguente comando:
$ sudo yum install app_name |
Nota: qui “nome_app” è il percorso del pacchetto software Stellar Repair for MySQL da installare.
Fase 2: Avvio del software. L’interfaccia principale del software si apre con una finestra di istruzioni. Fare clic su OK per procedere.
Fase 3: nella finestra Seleziona cartella dati, selezionare la versione dell’installazione di MySQL, quindi sfogliare e selezionare la cartella dati contenente il database danneggiato.
Fase 4: Viene visualizzato l’elenco dei database archiviati nella cartella dati selezionata. Selezionare tutti i database o quelli specifici che si desidera riparare, quindi fare clic su Ripara.
Fase 5: Fare clic su OK quando viene visualizzata la finestra di dialogo “Riparazione completata”.
Fase 6: Il software visualizza l’anteprima dei componenti del database MySQL recuperabili.
Fase 7: Fare clic su Salva nel menu File per salvare il file del database MySQL riparato.
Fase 8: Nella finestra di dialogo ‘Salva database’, scegliete MySQL in Save As (Salva con nome) e inserite i dettagli richiesti per connettervi al vostro server MySQL. Fare clic su Salva per salvare il file del database riparato nel server MySQL.
Fase 9: Al termine del processo di salvataggio del file riparato viene visualizzato il messaggio “Save Complete”.
Dopo aver eseguito questi passaggi, il database MySQL verrà riparato.
Conclusione
La riparazione del database MySQL in un sistema basato su Linux con il metodo manuale non garantisce il ripristino di tutti i componenti del database. Potrebbe funzionare per risolvere problemi di database minori, ma non riesce a risolvere un database MySQL fortemente danneggiato. L’uso del software Stellar Repair for MySQL può aiutare a riparare un database gravemente danneggiato e a recuperare tutti i suoi componenti, preservando la struttura e i contenuti originali dei file.
Was this article helpful?