Sommario
    Riparazione database MySQL

    Come risolvere la corruzione del database del server MySQL?


    Sommario

      Riassunto: Questo blog illustra le potenziali ragioni alla base del problema di corruzione del database del server MySQL e i passaggi per risolvere il problema. Questi passaggi includono il backup del database (db) prima di eseguire le operazioni di ripristino, l'uso di 'innodb_force_recovery', ecc.

      Il blog spiegherà anche come il software di riparazione MySQL può aiutare quando non si riesce a riparare e ripristinare il database.

      Il danneggiamento del database in MySQL Server, se non viene gestito correttamente o risolto in tempo, può portare a gravi interruzioni e perdite di dati.

      Sfortunatamente, potreste anche non accorgervi che il vostro server MySQL è diventato corrotto, fino a quando il server non accede a una tabella corrotta o non viene spento.

      Cosa causa l’interruzione del database nel server MySQL?

      Di seguito sono riportati alcuni dei motivi più comuni alla base della corruzione del database del server MySQL:

      • Guasto dell’hardware del server.
      • Il processo MySQL viene ucciso nel bel mezzo della scrittura sul disco.
      • Il software di terze parti per accedere al database si blocca inaspettatamente.
      • Gli utenti cercano di spostare manualmente i file del database nella directory dei dati di MySQL (o datadir).
      • Bug nel software del server MySQL.

      Oltre a questi motivi, la corruzione del db dipende anche dall’utilizzo del motore di archiviazione MyISAM o InnoDB. Infatti, le tabelle MyISAM sono più suscettibili alla corruzione.

      Cosa fare quando il database MySQL si corrompe?

      Di solito, quando il database MySQL è danneggiato, si consiglia di ripristinarlo dall’ultima copia di backup nota. Ma se non si dispone di una copia di backup, l’esecuzione di operazioni di ripristino può aiutare a risolvere il danneggiamento del database MySQL.

      Anche se il backup è disponibile, il tentativo di ripristino può essere un’opzione migliore in quanto richiede meno tempo per riportare il db online.

      Passi di risoluzione dei problemi per risolvere l’interruzione del database MySQL

      Cercate di risolvere il danneggiamento del database seguendo la sequenza elencata di seguito:

      NOTA: Questi passaggi funzionano solo se il server di database MySQL è in funzione. Tuttavia, se il servizio MySQL smette di funzionare (si è bloccato) e non è possibile accedere al client a riga di comando MySQL, l’unica opzione rimasta è quella di ripristinare il database da un buon backup conosciuto. Se non esiste un backup, può essere utile utilizzare un software specializzato per la riparazione di MySQL.

      Passo 1 – Backup del database

      Prima di tentare di riparare il database danneggiato, assicurarsi di eseguire un backup dei file del database.

      Anche se il db è già corrotto, il backup aiuta a minimizzare il rischio di ulteriori danni, che potrebbero essere causati da un’operazione di recupero.

      Per eseguire il backup di tutti i file db, procedere come segue:

      1. Arrestare il server MySQL.
      2. Creare una copia di backup della cartella dati.

      Passo 2 – Riportare il database in modalità di ripristino

      NOTA: Se MySQL Server utilizza MyISAM come motore di archiviazione predefinito, passare al punto 3 per conoscere il processo di riparazione del db danneggiato.

      Se InnoDB è il motore di archiviazione predefinito di MySQL Server, in alcuni casi di danneggiamento del database è sufficiente scaricare, eliminare e ricreare una o poche tabelle corrotte. A tale scopo, utilizzate l’istruzione CHECK TABLE per controllare le tabelle danneggiate.

      Leggete questo: Come riparare le tabelle del database MySQL senza interruzioni?

      Se la corruzione del database è grave, è probabile che si verifichino problemi durante l’avvio del server MySQL. In questo caso, forzare il ripristino di InnoDB può aiutare ad avviare MySQL.

      Per utilizzare l’opzione ‘innodb_force_recovery‘, seguire i seguenti passaggi:

      1. Aprite il file di configurazione di MySQL e aggiungete la seguente riga di codice alla sezione [mysqld] prima di riavviare il server:

      NOTA: Innodb_force_recovery è impostato a ‘0’ per impostazione predefinita. Tuttavia, per avviare InnoDB e scaricare le tabelle MySQL, è necessario impostare il valore a ‘1’ e aumentarlo in modo incrementale (da 1 a 6).

      Tuttavia, si tenga presente che impostare il valore dell’opzione innodb_force_recovery a 4 o più aumenta le possibilità di corruzione dei dati.

      [mysqld]

      innodb_force_recovery=1

      • Salvate e chiudete il file di configurazione di MySQL, quindi provate a riavviare il servizio MySQL.
      • Se siete in grado di avviare MySQL, scaricate tutti i database MySQL in un unico file usando il seguente comando:

      mysqldump -u [utente] -p[password] –all-databases > all_databases.sql

      NOTA: Il file di dump in questo esempio si chiama all_databases.sql. Tuttavia, è possibile cambiarlo con quello che si desidera.

      • In seguito, disabilitare la modalità di recupero InnoDB. Per farlo, commentare la seguente riga nella sezione [mysqld]:

      #innodb_force_recovery=…

      • Salvate le modifiche al file di configurazione e poi avviate il server MySQL.
      • Ripristinare i database dal dump (file di backup) creato al punto 3:

       mysql> sorgente all_databases.sql

      Leggete: I modi migliori per riparare la corruzione della tabella InnoDB in MySQL.

      Passo 3 – Riparare le tabelle MyISAM usando myisamchk

      Eseguire il comando myisamchk per riparare le tabelle MyISAM seguendo questi passaggi:

      NOTA: Il comando myisamchk non funziona per le tabelle che utilizzano il motore InnoDB.

      1. Arrestare il server MySQL.
      2. Utilizzare il seguente comando per verificare le tabelle corrotte:

      TABELLA

      • Per controllare tutte le tabelle di un database corrotto, digitate il seguente comando:

      myisamchk *.MYI

      • Provare a riparare una tabella corrotta eseguendo il seguente comando:

      myisamchk -recupera TABELLA

      • Avviare il server MySQL.

      Fare riferimento a questo link per informazioni dettagliate su “Come riparare la tabella MyISAM usando myisamchk?”.

      E se non funziona nulla?

      Se i passaggi di risoluzione dei problemi non riescono a risolvere il problema, utilizzare il software Stellar Repair for MySQL per riparare il database corrotto e ripristinare tutti i suoi oggetti. Il software può riparare il database MySQL su sistemi Windows e Linux.

      Alcuni motivi per cui si dovrebbe usare il software Stellar Repair for MySQL

      • Ripara le tabelle del db MySQL che utilizzano i motori di database InnoDB (.frm, .ibdata, .idb) e MyISAM (.frm, .myd, .myi).
      • Ripara in batch più database MySQL in un unico processo.
      • Recupera tutti gli oggetti del database come chiavi, tabelle, proprietà delle tabelle, tipi di dati, viste e trigger.
      • Visualizza in anteprima gli oggetti del database recuperabili.
      • Permette di salvare il database riparato in diversi formati di file, come MySQL, CSV, HTML e XLS.
      • Supporta MySQL 8.x, 6.x, 5.x, 4.x e 3.x.

      Passi per riparare il database MySQL corrotto con il software Stellar Repair for MySQL

      Prerequisiti:

      • La posizione del file ‘ibdata’ deve essere esattamente la stessa del database MySQL.
      • Assicuratevi che l’unità di destinazione abbia spazio libero sufficiente per memorizzare tutti i database MySQL recuperati.
      • MySQL deve essere installato sul sistema.

      Passo 1: Scaricare, installare e avviare il software Stellar Repair for MySQL.

      Download gratuito per Windows

      Fase 2: nella finestra Seleziona cartella dati, selezionare la versione di MySQL in uso.

      Finestra di selezione della cartella dati

      Figura 1 – Finestra di selezione della cartella dati

      Fase 3: Viene visualizzata la finestra Seleziona database. Selezionare il database da riparare.

      Finestra di selezione del database

      Figura 2 – Finestra di selezione del database

      Fase 4: Fare clic su Ripara per avviare il processo di riparazione.

      Fase 5: quando appare la finestra di dialogo Riparazione completata, fare clic su OK.

      Fase 6: Il software visualizza un’anteprima del database riparato e dei suoi componenti recuperabili.

      Finestra di anteprima

      Figura 3 – Finestra di anteprima

      Fase 7: Fare clic su Salva nel menu File per salvare il database riparato.

      Menu File

      Figura 4 – Menu File

      Fase 8: Nella finestra Salva database, scegliere il formato del file MySQL e fare clic su Salva.

      Finestra Salva database

      Figura 5 – Finestra Salva database

      Fase 9: quando appare il messaggio “Processo di salvataggio completato“, fare clic su OK.

      Casella di messaggio Salva completo

      Figura 6 – Casella di messaggio Salva completo

      Il database riparato verrà salvato nella posizione selezionata.

      Nota finale

      Quando si tratta di risolvere il danneggiamento del database nel server MySQL, l’esecuzione dei passaggi di risoluzione dei problemi discussi in questo post può aiutare a risolvere il problema.

      Tuttavia, se non si è esperti nel gestire il danneggiamento dei database o se si dispone di un db di grandi dimensioni (con gigabyte o terabyte di dati), è possibile che non si riesca a ripristinare il db danneggiato con le opzioni di riparazione e recupero. Inoltre, le opzioni di ripristino come innodb_force_recovery, impostate su un valore di 4 o superiore, possono causare il danneggiamento dei dati.

      Un’alternativa migliore è quella di utilizzare un software di riparazione MySQL appositamente creato per riparare facilmente un database corrotto nel formato originale.

      Was this article helpful?

      No NO

      Circa l'autore

      Himanshu Shakya

      Himanshu is a Tech Enthusiast & Blogger at Stellar and having knowledge of Japanese Language. And apart from this in his spare time he likes playing Chess.

      Post correlato

      PERCHÉ STELLAR® È LEADER MONDIALE

      Perché scegliere Stellar?

      • 0M+

        Clienti

      • 0+

        Anni di eccellenza

      • 0+

        Ingegneri R&S

      • 0+

        Paesi

      • 0+

        PARTNER

      • 0+

        Premi ricevuti