Lo sto scrivendo tanto per ricordarmi quanto per chiunque altro abbia davvero 🙂 In genere esero database in esecuzione sul mio MacBook che uso per siti in sviluppo attivo, quindi trasferisco questi database su un server di gestione temporanea che vengono quindi utilizzati da altre persone nel team e talvolta dai client per inserire il contenuto del sito. La scorsa settimana ho importato contenuto dal server di gestione temporanea e ho sovrascritto il mio database locale pensando che il server di gestione temporanea fosse il più aggiornato, ma come si è scoperto non ero corretto!
Fortunatamente sto eseguendo il backup della macchina del tempo di Mac OS X sul mio MacBook, quindi non ho visto un problema in quanto potevo semplicemente ripristinarlo da quello. Tuttavia, in realtà non era così semplice da fare, quindi ecco cosa ho dovuto fare alla fine per ripristinare questo database dal mio backup time machine.
Passaggio 1: Trovare i database locali
Passare al percorso dei database MySQL. Per la mia installazione MySQL questo si trova su /usr/local/mysql, ma a seconda di come hai installato MySQL potrebbe essere altrove.
Come probabilmente vedrai, non è una posizione che puoi semplicemente visualizzare regolarmente nel Finder su Mac, quindi dovrai usare "Vai alla cartella…". all'interno del menu 'Vai' nel Finder.
Una volta arrivati a quella posizione vedrai la cartella dati MySQL che viene visualizzata con un simbolo rosso senza accesso su di essa in modo da non poter effettivamente navigare direttamente in essa tramite il finder. Visto che non possiamo accedere alla cartella per ripristinare un database specifico, ripristineremo l'intera cartella dal backup di Time Machine.
Passaggio 2: Arrestare il server MySQL
È importante arrestare il processo del server MySQL prima di continuare. Il modo in cui si fa questo dipende da come è installato MySQL. Se hai installato MySQL dal programma di installazione ufficiale per OS X scaricato dal sito Web MySQL, potresti avere una preferenza di sistema che puoi usare per fermarlo.
Se hai installato MySQL in un altro modo come autocompilato o tramite porte Mac o vuoi semplicemente utilizzare il terminale, puoi invece fermarlo dal terminale. È possibile utilizzare il comando seguente:
arresto sudo mysqladmin
Se nel percorso del terminale non è configurato MySQL, potrebbe essere necessario utilizzare il percorso completo del comando mysqladmin:
sudo /usr/local/mysql/bin/mysqladmin shutdown
Il percorso di tali file può variare a seconda di come è stato installato MySQL, quindi se non funziona, sarà necessario controllare la posizione corretta. Si noti che ho anche usato "sudo" in quel comando nel caso in cui tu abbia bisogno di privilegi radice per interrompere il processo MySQL. Per ulteriori informazioni, consultare la documentazione MySQL relativa alla versione di MySQL in uso.
Passaggio 3: Rinominare la cartella dati MySQL tramite il terminale
Il passaggio successivo consiste nel rinominare temporaneamente la cartella dati MySQL per evitare interferenze durante il ripristino della cartella dati dal backup di Time Machine. Per prima cosa è necessario entrare nella directory MySQL:
cd /usr/local/mysql
Puoi quindi elencare tutti i file per verificare che tu sia nel posto giusto:
ls -al
Ora dovresti vedere tutti i file, inclusa la directory "dati" in cui si trovano i database. È ora possibile utilizzare il comando seguente per rinominare la directory dei dati:
sudo mv dati dati-bak
Una volta fatto ciò, dovresti vedere la tua directory felicemente rinominata sia nel terminale che nella finestra del Finder.
Passaggio 4: Immettere Time Machine per ripristinare la directory dati MySQL
Il passaggio successivo consiste nell'accedere alla modalità Time Machine e ripristinare la directory dei dati dal backup. Sono sicuro che probabilmente sai come accedere alla modalità Time Machine, ma assicurati di entrare mentre sei concentrato sulla finestra MySQL Finder.
Tornare indietro nel tempo una quantità sufficiente in modo da ottenere sicuramente la versione dei dati desiderata, evidenziare la cartella dati e fare clic su Ripristina. Poiché abbiamo rinominato la directory dei dati Time Machine ripristinerà semplicemente la directory dei dati senza alcun prompt. Ora dovrebbero essere visualizzato sia la directory dei dati ripristinata che la directory data-bak rinominata.
Passaggio 5: Copiare il database dalla directory dati ripristinata
È ora possibile copiare il database dalla directory dati ripristinata, operazione eseguita tramite il seguente comando Terminale:
dati sudo cp -R-bak/my_database_name dati/my_database_name
Il database è in realtà una directory contenente altri file, quindi è necessario utilizzare il flag '-R' per copiare ricorsivamente tutti questi con la directory stessa.
Passaggio 6: Eliminare la directory dati ripristinata e rinominare la directory data-bak
Ora che il database viene ripristinato e copiato, è possibile eliminare in modo sicuro la directory dei dati ripristinata in quanto non è più necessaria a questo punto. Nota: fai molta attenzione usando il comando 'rm'! Le cose brutte possono accadere se usate in modo errato!
dati sudo rm -R
È quindi possibile rinominare la directory data-bak con il nome originale 'data', si noti che il comando 'mv' non richiede il flag '-R':
sudo mv dati-bak dati
Passaggio 7: Controllare le autorizzazioni/proprietà dei file
Potrebbe essere necessario controllare le autorizzazioni per i file e la proprietà del database appena ripristinato per assicurarsi che sia accessibile da MySQL durante l'esecuzione. Questi possono variare a seconda del metodo di installazione MySQL, ma dovrebbero essere qualcosa del genere:
drwx—— 60 _mysql 2040 8 maggio 12:14 my_database_name
Fondamentalmente la directory è di proprietà dell'utente "_mysql" e nel gruppo "ruota". Se è necessario modificare il proprietario, utilizzare il comando seguente:
sudo chown -R _mysql dati/my_database_name
Passaggio 8: Avviare MySQL
Una volta fatto tutto questo, è possibile avviare nuovamente MySQL utilizzando la preferenza di sistema se disponibile o tramite il comando Terminale:
sudo mysqld_safe &
o con il percorso completo:
sudo /usr/local/mysql/bin/mysqld_safe &
Passo 9: Non c'è nessun passo 9!
Spero che ora dovresti essere in grado di accedere al tuo database appena restaurato. Come ho detto all'inizio, questo è il metodo che ho usato per ripristinare personalmente un database di recente, potrebbero esserci altri modi per farlo, ma si spera che questi passaggi possano essere di uso per chiunque altro nella stessa situazione.