Използвах временно Mac на моя приятел, докато моят не беше обслужен. Така че по-рано тази седмица изтрих потребителския си акаунт на неговия Mac, който имаше куп бази данни, от които имах нужда. Бях архивирал повечето потребителски данни, преди да изтрия този акаунт, но скоро осъзнах, че съм пропуснал да архивирам базата данни. Щастието и вероятно причината за това е, че директорията с данни на базата данни обикновено се намира извън потребителския акаунт. В тази статия ще спомена точките за това как върнах тези DB данни, използвайки потребителския акаунт на приятелите си (или дори можете да създадете нов и да направите същите стъпки).
- Уверете се, че mariadb все още е инсталиран, като изпълните
brew install mariadb
.Открих, че е наличен, но homebrew няма достъп до директорията за инсталиране, тъй като е създаден от различен потребителски акаунт. Така че първо възстановяваме това, като изпълним:
sudo chown -R $(whoami) /usr/local/bin
Ако командата изведе дъмп за грешка, показващ до кои папки няма достъп, можете да изпълните същата команда за всяка от папките. Пуснах също brew upgrade mariadb
за да останете в крак с данните с по-новата инсталация на mariadb (въпреки че не бих посъветвал да изпълнявате това като цяло, докато не архивирате базите данни).
- След това трябва да разберете коя директория с данни използва mariadb и да стартирате chown и върху нея. Това може да стане, като изпълните:
brew services list
Това ще даде списък на работещите услуги и техните конфигурации за изпълнение. Просто отворете конфигурацията на задачите на mariadb и вижте параметъра --datadir
в XML--трябва да е вътре в блока с аргументи. В моя случай това беше --datadir=/usr/local/var/mysql
. Сега копирайте този път и стартирайте:
sudo chown -R $(whoami) /usr/local/var/mysql
В този момент може да се чудите защо просто не копирате директорията с данни в собствен Mac и след това да отворите базата данни директно? Проблемът тук е, че папката има само .ibd и .frm файлове, които наистина не се импортират от mySQL. Така че трябва да стартирам mysql сървъра отново с тази директория с данни и след това да я експортирам.
- След това трябваше да спра всеки текущ mysql сървър, за да гарантирам, че мога да стартирам mysql гладко. Правя това, като стартирам:
brew services stop mariadb
ps aux | grep mysql
Последната команда е да проверите дали няма други работещи екземпляри на mysql. Ако командата върне процеси, изпълняващи mysql, тогава те трябва да бъдат убити с командата kill -9 или в противен случай отворете Activity Monitor, използвайте търсене, за да филтрирате mysql и ги убийте принудително ръчно.
Сега новият екземпляр на mysql може да се стартира с помощта на:
brew services start mariadb
Като алтернатива, можете дори да извикате програмата, намерена в папката bin, спомената в XML файла на конфигурацията на услугата homebrew, т.е. да вземете първия програмен низ и да замените mysqld_safe
към mysql.server start
и изпълнете командата. В моя случай направих това, като изпълних:
/usr/local/opt/mariadb/bin/mysql.server start
Ще върне УСПЕХА! ако услугата стартира успешно. В противен случай ще трябва да проверите регистрационните файлове за грешки (беше в /usr/local/var/mysql
папка за мен), за да разбера какво се е объркало и да го разреши чрез малко гугъл.
И това е почти всичко, вече можете да архивирате базите данни, както обикновено правите. Правя това като стартирам:
mysql -u root -p<password>
show databases
И това ще даде списък на всички бази данни. След това изпълнете командата за архивиране за всяка база данни, която искате да архивирате като:
mysqldump -u root -p<password> dbname > dbname.sql
И почти така се прави. И прехвърлих базите данни на собствения си лаптоп и беше готово.