Я разрабатываю локально на Mac, и мой компьютер вчера совсем умер. Жесткий диск пропал, по-видимому, его невозможно восстановить.
У меня есть текущая резервная копия на Time Machine.
Итак, мой вопрос:
Как именно восстановить эту резервную копию? Есть ли физическое расположение баз данных, которое я могу восстановить? Где бы это было?
Я не часто использую MySQL из командной строки, но я знаком с консолью и прочим.
Насколько я понимаю, полные резервные копии Time Machine предназначены только для того, чтобы попасть на машину, которая умерла, но мне нужны резервные копии MySQL, прежде чем у меня будет время заняться другим моим компьютером, поэтому я ищу способ получить базы данных восстановлен на моем ноутбуке, когда исходные файлы MySQL находятся на внешнем жестком диске, подключенном к моему ноутбуку.
Спасибо!
Я просто должен был с этим справиться.
В моем случае mysql живет в /usr/local/mysql/
(где последняя часть фактически является символической ссылкой на текущую установленную версию mysql). Он действительно правильно выполняет резервное копирование файлов, и вся структура существует в резервной копии.
Но по какой-то причине, даже если вы перейдете к правильному локальному пути в Finder, если вы запустите «Time Machine», он покажет, что предыдущей резервной копии не существовало. Что, к счастью, неверно, если только вы этого не исключили.
Итак, чтобы восстановить резервную копию, вам нужно перейти к соответствующему пути в резервном томе, который должен быть примерно таким: /Volumes/<yourbackupvolume>/Backups.backupdb/<host>/<revision>/Macintosh HD/usr/local/mysql/data/
. Проще всего в Терминале. Однажды ты cd
'd к правильному пути, который вы можете использовать open .
чтобы открыть окно поиска на этом пути, и используйте перетаскивание. Однако Finder, вероятно, сначала попросит вас стать владельцем папки, поэтому вам придется позже исправить разрешения.
Если у вас постоянно работает mysql, проблема все равно может возникнуть. Насколько мне известно, InnoDB довольно устойчив, но возможно, что файловая структура повреждена. MySQL поставляется с mysqlcheck
который якобы может ремонтировать такие столы ..
Если вы этого не сделаете, возможно, проще найти резервную копию, в которой дата / время изменения все файлы в data/
(разумно, скажем, на несколько минут) ниже даты и времени резервного копирования. В этом случае вы можете быть разумно уверены, что у вас есть согласованная резервная копия, и mysql должен без проблем запускаться с нее.
Если по какой-то причине ваши разрешения не работают после восстановления, в настоящее время (OS X 10.10 / Yosemite) разрешения, установленные
sudo chown -R _mysql:admin /usr/local/mysql/data
отлично поработал для меня (MySQL работает как пользователь _mysql
). Обратите внимание, что mysqld
почти незаметно завершится с ошибкой и попытается создать файл журнала ошибок только в /usr/local/mysql/data/
, который также может не работать из-за разрешений.
Time Machine не является резервной копией SQL, она будет выполнять резервное копирование фактических файлов, составляющих вашу базу данных SQL.
Я не знаю, как Mac обрабатывают резервное копирование открытых файлов (я предполагаю, что вы запускаете MySQL как какую-то службу или демон)
Что вам, вероятно, нужно сделать, так это использовать графический интерфейс машины времени, чтобы вернуть файлы базы данных (просто перейдите к нужной версии и нажмите, я полагаю; Time Machine позаботится о том, чтобы вернуть исходные + дополнительные изменения)
Тогда вам, вероятно, потребуется запустить некоторые инструменты согласованности, чтобы убедиться, что ваша БД согласована. Некоторые из них должны быть встроены в MySQL, но я не эксперт. Есть ли в MySQL журналы транзакций? если это так, используйте Time Machine, чтобы вернуть их в тот же самый момент времени.