Ripristina il database mysql dai file .frm

Ho scaricato tutti i miei tavoli ogni settimana per ottenere il backup. Ma più tardi capisco che sta solo memorizzando il file .frm del tavolo. Non mostra file .MYD e .MYI di una tabella. Quindi ho solo il mio file .frm del database con me e anche mydatabase è innodb. Quindi posso ottenere il mio database con i dati nel database?

Sì, questo è ansible. Non è sufficiente copiare i file .frm nella cartella databse, ma è anche necessario copiare i file ib_logfiles e ibdata nella cartella dei dati. Ho appena copiare i file .frm e copiare quei file e basta riavviare il server e il mio database viene ripristinato.

Potrebbe essere utile per qualcuno:

Ho potuto recuperare solo i file FRM dopo un disastro, almeno potevo ottenere la struttura della tabella dai file FRM effettuando le seguenti operazioni:

1- creare alcune tabelle fittizie con almeno una colonna e SAME NAME con i file frm in un nuovo database mysql.

Servizio mysql 2-stop

3- copia e incolla i vecchi file frm nei file frm della tabella appena creata, dovrebbe chiederti se vuoi sovrascriverli o meno per ciascuno. sostituisci tutto.

4-start servizio mysql, e hai la tua struttura tabella …

Saluti. anybudy

Ho risposto a questa domanda anche qui: https://dba.stackexchange.com/a/42932/24122

Di recente ho avuto questo stesso problema. Sono su un Mac e quindi ho usato MAMP per ripristinare il Database in un punto in cui potevo esportarlo in un dump MySQL.

Puoi leggere l’intero post sul blog qui: http://www.quora.com/Jordan-Ryan/Web-Dev/How-to-Recover-innoDB-MySQL-files-using-MAMP-on-a-Mac

Tu devi avere:

-ibdata1

-ib_logfile0

-ib_logfile1

– File .FRM dalla tua cartella mysql_database

-Fresh installazione di MAMP / MAMP Pro che sei disposto a distruggere (se necessario)

  1. SSH nel tuo server web (dev, produzione, nessuna differenza) e sfoglia la tua cartella mysql (la mia era in / var / lib / mysql per un’installazione di Plesk su Linux)
  2. Comprimi la cartella mysql
  3. Scarica un archivio della cartella mysql che dovrebbe contenere tutti i database mySQL, sia MyISAM che innoDB (puoi scpare questo file o spostarlo in una directory scaricabile, se necessario)
  4. Installa MAMP (Mac, Apache, MySQL, PHP)
  5. Passare a / Applicazioni / MAMP / db / mysql /
  6. Backup / Applicazioni / MAMP / db / mysql in un archivio zip (per ogni evenienza)
  7. Copia in tutte le cartelle e file inclusi nell’archivio della cartella mysql dal server di produzione (mt ambiente Plesk nel mio caso) TRANNE NON SOVRASCRIVERE:

    – / Applications / MAMP / db / mysql / mysql /

    – / Applications / MAMP / db / mysql / mysql_upgrade_info

    – / Applications / MAMP / db / mysql / performance_schema

  8. E voilà, ora dovresti essere in grado di accedere ai database da phpMyAdmin, che sollievo!

Ma non abbiamo finito, ora è necessario eseguire un mysqldump per ripristinare questi file nell’ambiente di produzione e l’interfaccia phpmyadmin scade per database di grandi dimensioni. Segui i passaggi qui:

http://nickhardeman.com/308/export-import-large-database-using-mamp-with-terminal/

Copiato sotto per riferimento. Si noti che su un’installazione MAMP predefinita, la password è “root”.

Come eseguire mysqldump per MAMP usando Terminal

EXPORT DATABASE FROM MAMP [1]

Fase uno: aprire una nuova finestra di terminale

Fase 2: Passare all’installazione MAMP inserendo la seguente riga nel terminale cd / applications / MAMP / library / bin Premere il tasto Invio

Passo 3: Scrivi il comando dump ./mysqldump -u [USERNAME] -p [DATA_BASENAME]> [PATH_TO_FILE] Premi il tasto Invio

Esempio:

 ./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql 

Suggerimento rapido: per navigare rapidamente in una cartella è ansible trascinare la cartella nella finestra del terminale e scrivere la posizione della cartella. E ‘stato un grande giorno in cui qualcuno mi ha mostrato questo.

Passo 4: questa riga di testo dovrebbe apparire dopo aver premuto invio Inserisci password: quindi indovina cosa, digita la password, tieni presente che le lettere non appariranno, ma sono lì Premi il tasto Invio

Passaggio 5: verificare la posizione in cui è stato archiviato il file, se presente, SUCCESSO Ora è ansible importare il database, che verrà descritto successivamente.

Ora che hai un’esportazione del tuo database mysql puoi importarlo nell’ambiente di produzione.

Ho fatto uso di mysqlfrm che è un ottimo strumento che genera codice sql per la creazione di tabelle da file .frm. Stavo ottenendo questo errore non trovato tabella ctriggers nonostante fossero elencate le tabelle. Così ho usato questo strumento per rigenerare le tabelle. In Ubuntu devi installare questo come:

 sudo apt install mysql-utilities 

poi,

 mysqlfrm --diagnostic mysql/db_name/ > db_name.sql 

Crea un nuovo database e poi puoi usare,

 mysql -u username -p < db_name.sql 

Tuttavia, questo ti darà le tabelle ma non i dati. Nel mio caso questo è stato sufficiente.

Ho appena copiato le cartelle del database nella cartella dei dati in MySQL, cioè se hai un database chiamato alto allora trova la cartella alto nella tua cartella MySQL -> Dati nel tuo backup e copia l’intera cartella alto e incollala su MySQL appena installato – > cartella dati, riavvia MySQL e questo funziona perfettamente.

Prima di iniziare, è necessario interrompere i servizi WAMP o almeno riavviare i servizi quando viene richiesto di avviarli.

Sulla vecchia istanza del server navigare per la cartella dei dati MySQL per impostazione predefinita questo dovrebbe apparire simile a C:\wamp\bin\mysql\mysql5.1.53\data\ dove mysql5.1.53 sarà il numero di versione del database MySQL installato in precedenza.

All’interno di questa cartella dovresti vedere alcuni file e cartelle. Le cartelle sono i veri e propri database MySQL e contengono un sacco di file .frm che richiederemo. Dovresti riconoscere i nomi delle cartelle come nomi del database. Queste cartelle e tutti i loro contenuti possono essere copiati direttamente nella tua cartella dati MySQL, puoi trascurare i database predefiniti mysql, performance_schema, test.

Se hai avviato il server ora vedrai i database raccolti, tuttavia i database non conterranno nessuna delle tabelle che sono state copiate. Per poter prelevare il contenuto del database, nella cartella dati dovresti vedere un file ibdata1 , questo è il file di dati per le tabelle, copialo direttamente nella cartella dei dati, dovresti già avere un file nel tuo nuovo cartella dati chiamata “ibdata1”, quindi potresti voler rinominarlo in ibdata1.bak prima di copiare su ibdata1 dalla vecchia cartella dati MySQL.

Fatto ciò, riavviare tutti i servizi WAMP. È ansible utilizzare PhpMyAdmin per verificare se i database sono stati ripristinati correttamente.

Copia tutto il file e sostituiscilo in / var / lib / mysql, dopodiché devi cambiare proprietario dei file in mysql questo è così importante se mariadb.service restart è stato faild

chown -R mysql: mysql / var / lib / mysql / *

e

chmod -R 700 / var / lib / mysql / *

crea un nuovo database con lo stesso nome copia i file .frm .ibd in xampp / mysql / data / [ nomedatabase ] /

avrete bisogno anche del file ibdata che si trova all’interno

xampp / mysql / data / copia il precedente file ibdata1 incolla nel file incolla e lo sostituisce con il file ibdata esistente

[ attenzione: potresti perdere il contenuto del database che sono stati appena creati nel nuovo file ibdata ]