Stavo usando temporaneamente il mac di un mio amico fino a quando il mio non è stato riparato. Quindi all'inizio di questa settimana, ho eliminato il mio account utente sul suo Mac che aveva un sacco di database di cui avevo bisogno. Avevo eseguito il backup della maggior parte dei dati utente prima di eliminare quell'account, ma presto mi sono reso conto di aver perso il backup del database. La cosa fortunata e forse la ragione di ciò è che la directory dei dati del database risiede generalmente al di fuori dell'account utente. In questo articolo, menzionerò punti elenco su come ho recuperato questi dati DB utilizzando l'account utente dei miei amici (o puoi persino crearne uno nuovo e fare gli stessi passaggi).
- Assicurati che mariadb sia ancora installato eseguendo
brew install mariadb
.Ho scoperto che era disponibile ma homebrew non aveva accesso alla directory di installazione poiché era stato creato da un account utente diverso. Quindi prima lo recuperiamo eseguendo:
sudo chown -R $(whoami) /usr/local/bin
Se il comando ha generato un dump di errore che mostra a quali cartelle non ha accesso, puoi eseguire lo stesso comando per ciascuna delle cartelle. Ho anche eseguito brew upgrade mariadb
per rimanere aggiornato sui dati con la nuova installazione di mariadb (anche se non consiglierei di eseguirla in generale finché non avrai eseguito il backup dei database).
- Poi devi capire quale directory di dati utilizza mariadb ed eseguire chown anche su quella. Questo può essere fatto eseguendo:
brew services list
Questo fornirà un elenco dei servizi in esecuzione e delle relative configurazioni di esecuzione. Basta aprire la configurazione delle attività di mariadb e vedere il parametro --datadir
nell'XML--dovrebbe essere all'interno del blocco degli argomenti. Nel mio caso, questo era --datadir=/usr/local/var/mysql
. Ora copia quel percorso ed esegui:
sudo chown -R $(whoami) /usr/local/var/mysql
A questo punto, potresti chiederti, perché non copiare semplicemente la directory dei dati nel proprio Mac e quindi aprire direttamente il database? Il problema qui è che la cartella ha solo .ibd e .frm file che in realtà non sono importabili da MySQL. Quindi devo eseguire di nuovo il server mysql con questa directory di dati e quindi esportarla.
- Successivamente, ho dovuto interrompere qualsiasi server MySQL in corso per assicurarmi di poter avviare MySQL senza problemi. Lo faccio eseguendo:
brew services stop mariadb
ps aux | grep mysql
L'ultimo comando è quello di verificare che non ci siano altre istanze mysql in esecuzione. Se il comando restituisce dei processi che eseguono mysql, allora quelli devono essere uccisi usando il comando kill -9 oppure, apri Activity Monitor, usa la ricerca per filtrare mysql e forzarli manualmente.
Ora, la nuova istanza di mysql può essere avviata usando:
brew services start mariadb
In alternativa, puoi anche chiamare il programma che si trova nella cartella bin menzionata nel file XML della configurazione del servizio homebrew, ovvero prendere la prima stringa di programma e sostituire mysqld_safe
a mysql.server start
ed eseguire il comando. Nel mio caso, l'ho fatto eseguendo:
/usr/local/opt/mariadb/bin/mysql.server start
Tornerà SUCCESSO! se il servizio viene avviato correttamente. Altrimenti, dovresti controllare i log degli errori (era in /usr/local/var/mysql
cartella per me) per capire cosa è andato storto e risolverlo cercando su Google.
E questo è praticamente tutto, ora puoi eseguire il backup dei database come faresti normalmente. Lo faccio eseguendo:
mysql -u root -p<password>
show databases
E questo darebbe un elenco di tutti i database. E quindi esegui il comando di backup per ogni database di cui desideri eseguire il backup come:
mysqldump -u root -p<password> dbname > dbname.sql
Ed è più o meno così che si fa. E ho trasferito i database sul mio laptop ed è stato fatto.