Ubuntu 14.04 - Recuperare database mysql da file

google-plus Scritto da . Postato in Ubuntu

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:

ApacheMySQLPHP

  • Una volta installato LAMP su Ubuntu, installate anche phpMyAdmin. servirà a ricreare e gestire i database sul nuovo sistema:

Installare phpmyadmin su Ubuntu 14.04

  • Se una volta installato, digitando sulla barra degli indirizzi del vostro browser:
http://localhost/phpmyadmin
  • Dovesse non comparire nulla, o un errore 404 "Not found", applicate la soluzione che da questo post:

Soluzione a PhpMyAdmin Not Found

Creare i nuovi database con phpMyAdmin

  1. Accedete al pannello di phpMyAdmin con la login da voi scelta 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. 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... 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 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


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

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.