Ripristino del database MySQL InnoDB
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?
Soluzione
.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)
- 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
-
Copia i 3 file ibdata nella cartella dati es. (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)
_ib_logfile0 _ib_logfile1 _ibdata1
-
Ottieni le dimensioni di _ib_logfile0 in MB (dovrebbe essere uguale a _ib_logfile1) con il pulsante destro del mouse su File - > Proprietà
-
Modifica il file di configurazione mysql (mysql \ bin \ my.ini) affinché innodb_log_file_size = 343M sia esattamente la dimensione dei file ibdata
-
Esegui
mysqld --defaults-file = mysql \ bin \ my.ini --standalone --console --innodb_force_recovery = 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 .