Dočasně jsem používal Mac svého přítele, dokud můj vlastní nebyl opraven. Takže začátkem tohoto týdne jsem smazal svůj uživatelský účet na jeho počítači Mac, který měl spoustu databází, které jsem potřeboval. Před smazáním tohoto účtu jsem zálohoval většinu uživatelských dat, ale brzy jsem si uvědomil, že jsem propásl zálohování databáze. Naštěstí a možná i důvodem je to, že datový adresář databáze se obecně nachází mimo uživatelský účet. V tomto článku se zmíním o tom, jak jsem získal tato data DB zpět pomocí uživatelského účtu mých přátel (nebo si dokonce můžete vytvořit nový a provést stejné kroky).
- Spuštěním
brew install mariadb
se ujistěte, že je mariadb stále nainstalován .Zjistil jsem, že je k dispozici, ale homebrew neměl přístup k instalačnímu adresáři, protože byl vytvořen z jiného uživatelského účtu. Nejprve to tedy obnovíme spuštěním:
sudo chown -R $(whoami) /usr/local/bin
Pokud příkaz vyvolal výpis chyb ukazující, ke kterým složkám nemá přístup, můžete spustit stejný příkaz pro každou ze složek. Také jsem spustil brew upgrade mariadb
abyste měli přehled o datech s novější instalací mariadb (ačkoli bych obecně nedoporučoval spouštět to, dokud si nezazálohujete databáze).
- Dále musíte zjistit, který datový adresář mariadb používá, a také na něm spustit chown. To lze provést spuštěním:
brew services list
Zobrazí se seznam spuštěných služeb a jejich konfigurace spuštění. Stačí otevřít konfiguraci úloh mariadb a zobrazit parametr --datadir
v XML -- by mělo být uvnitř bloku argumentů. V mém případě to bylo --datadir=/usr/local/var/mysql
. Nyní zkopírujte tuto cestu a spusťte:
sudo chown -R $(whoami) /usr/local/var/mysql
V tuto chvíli se můžete divit, proč jednoduše nezkopírovat datový adresář do vlastního počítače Mac a poté přímo otevřít databázi? Problém je v tom, že složka má pouze .ibd a .frm soubory, které opravdu nelze importovat pomocí mySQL. Takže musím znovu spustit mysql server s tímto datovým adresářem a poté jej exportovat.
- Dále jsem musel zastavit jakýkoli probíhající server mysql, abych zajistil, že budu moci spustit mysql hladce. Dělám to spuštěním:
brew services stop mariadb
ps aux | grep mysql
Posledním příkazem je zkontrolovat, zda nejsou spuštěny žádné další instance mysql. Pokud příkaz vrátí nějaké procesy, na kterých běží mysql, je třeba je zabít pomocí příkazu kill -9 nebo jinak, otevřete Activity Monitor, použijte vyhledávání k odfiltrování mysql a vynuceníte je ručně.
Nyní lze novou instanci mysql spustit pomocí:
brew services start mariadb
Případně můžete dokonce zavolat program nalezený ve složce bin uvedené v souboru XML konfigurace služby homebrew, tj. vzít první řetězec programu a nahradit mysqld_safe
na mysql.server start
a spusťte příkaz. V mém případě jsem to udělal spuštěním:
/usr/local/opt/mariadb/bin/mysql.server start
Vrátí to ÚSPĚCH! pokud se služba úspěšně spustí. Jinak byste museli zkontrolovat protokoly chyb (byly v /usr/local/var/mysql
složku pro mě), abych zjistil, co se pokazilo, a vyřešil to nějakým googlováním.
A to je v podstatě vše, nyní můžete zálohovat databáze tak, jak byste to normálně dělali. Dělám to spuštěním:
mysql -u root -p<password>
show databases
A to by dalo seznam všech databází. A poté spusťte příkaz backup pro každou databázi, kterou chcete zálohovat jako:
mysqldump -u root -p<password> dbname > dbname.sql
A tak se to do značné míry dělá. A přenesl jsem databáze na svůj vlastní laptop a bylo hotovo.