Domanda

Devo ripristinare un database che è stato inavvertitamente DROPped in MySQL 5.0. Dal controllo dei file di backup, mi sembra di avere solo file .FRM per contenere i dati del database.

Qualcuno può avvisare se questo è tutto ciò di cui ho bisogno per eseguire un ripristino / importazione del database dal backup, o ci sono altri file che dovrei avere a portata di mano per completare questo?

È stato utile?

Soluzione

I file

.frm non sono i file di dati, ma memorizzano solo le informazioni sul dizionario dei dati " (vedi manuale MySQL ). InnoDB archivia i suoi dati in file ib_logfile *. Questo è quello che ti serve per fare un backup / ripristino. Per maggiori dettagli vedi qui .

Altri suggerimenti

Ripristino di innodb: (supponendo che la cartella dei dati sia C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)

  1. Copia le cartelle dei database (che prendono il nome dal nome del database) che desideri ripristinare in C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data
  2. Copia i 3 file ibdata nella cartella dati es. (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)

    _ib_logfile0
    _ib_logfile1
    _ibdata1
    
  3. Ottieni le dimensioni di _ib_logfile0 in MB (dovrebbe essere uguale a _ib_logfile1) con il pulsante destro del mouse su File - > Proprietà

  4. Modifica il file di configurazione mysql (mysql \ bin \ my.ini) affinché innodb_log_file_size = 343M sia esattamente la dimensione dei file ibdata

  5. Esegui

      

    mysqld --defaults-file = mysql \ bin \ my.ini --standalone --console   --innodb_force_recovery = 6

  6. Ora i tuoi dati dovrebbero essere di nuovo nel tuo database. Esportali usando phpmysql o qualsiasi altro strumento

Oh mio ... sei nei guai. Chiudere il database. Eseguire il backup del file innodb. Prega di non aver fatto NIENTE dopo aver eliminato il database.

I ragazzi di Percona (inclusi gli autori di MySQL Performance Blog) dovrebbero essere in grado di aiutarti: Supporto di emergenza Percona .

Se ti avventuri da solo, portalo con te: Data Recovery Toolkit for Innodb .

La logistica di esso? Devi leggere ogni pagina (la pagina dei termini del computer ... blocco 16k nel caso di Innodb) e ricostruire i tuoi dati in quel modo. È un lavoro di livello molto basso (stiamo parlando di aprire il tuo editor esadecimale e iniziare a contare i byte se il toolkit non lo fa per te), e se non sei un programmatore con grande esperienza, ti farà male .

La soluzione dettagliata che puoi trovare qui:

http://www.unilogica.com/mysql-innodb-recovery/ (Articolo in portoghese)

Oltre alla bandiera di innodb_force_recovery , ho trovato un'altra soluzione: innodb_file_per_table , che divide le tabelle InnoDB in ogni file come le tabelle MyISAM.

In un ripristino di emergenza è possibile perdere meno dati rispetto al singolo file ibdata1 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top