Ubuntu 14.04 - Recuperare database mysql da file

google-plus Scritto da . Postato in Ubuntu - Linux

Può capitare di dover ripristinare uno o più database mysql, partendo dai soli file che li costituivano in precedenza all'interno del mysql server su un altro PC.

Su Ubuntu, il semplice copia incolla, non basta. Se anche entrassimo nella cartella /var/lib/mysql di origine, dove risiedono i file frm dei database e li copiassimo fisicamente con i permessi di root, all'interno della stessa cartella del nuovo server MySQL, il nostro lavoro non sarebbe terminato.

Al termine dell'operazione, sia che utilizziamo phpMyAdmin o altro gestore di database, non potremmo accedere ai dati del database copiato ottenendo probabilmente l'errore #1046 - Table doesn't exist.

La tabella fisicamente esisterebbe, ma per permessi di lettura, ownership o mancanza di riferimenti alla stessa nel file ibdata1, sarebbe ignorata dal server MySQL o comunque risulterebbe illeggibile.

Il caso descritto, è quello del caso ipotetico di ripristino dei database su una nuova installazione di Ubuntu, recuperando i file da una precedente installazione di LAMP e del sistema operativo Debian based.

Ripristino dei database

Backup dei database

  1. La prima cosa da fare, è recuperare i file dei database dal sistema precedente effettuandone il backup: spostatevi nella cartella /var/lib/mysql. Al suo interno risiedono tutti i file che costituivano i database sulla vecchia installazione.
  2. Copiate tutto il contenuto della cartella mysql, compreso il file ibdata1 e i relativi log.

Installare LAMP e phpMyAdmin (se necessario)

Sulla macchina di destinazione, se non avete installato già un webserver e mysql server, procedete ora all'installazione di uno stack LAMP o simile.

Per sapere come fare, puoi leggere la guida che ho scritto su come installare LAMP su un sistema Ubuntu:

Ubuntu - Installare Apache MySQL PHP e phpMyAdmin

 

Creare i nuovi database con phpMyAdmin

  1. Accedete al pannello di phpMyAdmin con le credenziali da voi scelte durante l'installazione di LAMPphpmyadmin login
  2. Cliccate su Database nel menu in alto.phpmyadmin gui
  3. Ricreate i database da importare dal backup appena effettuato. Devono avere lo stesso identico nome dei precedenti.
  4. Aprite Nautilus e navigate fino alla cartella /var/lib/mysql della nuova installazione.
  5. Incollate e unite nella cartella le folders presenti nel backup (quelle contententi i file dei database da ripristinare) con quelle già presenti.
    P.S. Alcuni suggeriscono di non copiare il file .opt contenuto nelle cartelle di ogni singolo database.
  6. Copiate e sostituite il file ibdata1 dal vostro backup nella cartella /var/lib/mysql del vostro MySQL server di destinazione.
  7. Aprite ora una finestra del terminale e digitate il comando:
sudo service apache2 restart

Il comando riavvierà Apache.

Tornando ora a phpMyAdmin, e testando il funzionamento del database, dovreste poter accedere e leggere le tabelle ripristinate.

Alcuni suggerimenti e soluzioni

Se non dovesse funzionare, ci sono due possibili soluzioni (se avete altri suggerimenti commentate l'articolo o scrivetemi... wink):

Cambio ownership dei file del database

Da terminale, digitate:

sudo su
cd /var/lib/mysql
ls -l

I comandi servono a vedere i permessi e le ownership delle cartelle ivi contenute. Provate ora, a dare il comando seguente per assegnare la cartella del database designato all'utente mysql:

chown -R mysql:mysql nomedatabase

Testate nuovamente il funzionamento del database.

Reinstallare LAMP server

Capita tuttavia, che non funzioni nemmeno una volta dato all'utente mysql il pieno controllo dei file del database. A questo punto, provate a reinstallare LAMP digitando da terminale:

sudo apt-get --reinstall install lamp-server^

Questo forzerà la reinstallazione di LAMP server evitando di perderne i dati. Terminata l'installazione, i vostri database dovrebbero essere tornati in vita.


 

Se hai gradito l'articolo, condividilo, basta un click:

Commenti   

Maks
0 #1 Maks 2015-10-25 17:16
Ho utilizzato la procedura e ho riscontrato un problema con le proprietà sui file.
Ho reinstallato il server mysql, ho controllato i proprietari sui file (mysql:mysql) e li ho ripristinati dopo la copia.

Ecco un esempio di istruzione utilizzata:
sudo cp -r /dati/hd-server-bdm/var/lib/mysql/AMMINISTRAZIONE /var/lib/mysql && sudo chown -R mysql:mysql /var/lib/mysql/AMMINISTRAZIONE
Citazione

Aggiungi commento

I commenti lasciati dagli utenti del blog sono sempre soggetti a controllo prima di eventuale pubblicazione. I commenti non considerati adatti per contenuti, spam o forma saranno eliminati e non pubblicati. Leggi i Termini e Condizioni di utilizzo per maggiori informazioni.


Codice di sicurezza
Aggiorna

  • logo teoca
  • materexcel collabora
  • logo flash pulizie
  • revolution srl
  • logo arcotraslochi
  • montaggio mobili trento
  • logo elevatori sito
  • logo prontopro

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati. Ti invitiamo a prendere visione della nostra Informativa sulla Privacy (aggiornata il 25/05/2020). Oppure visiona la nostra Cookie Policy (aggiornata il 17/10/2019):