Назад | Перейти на главную страницу

Как восстановить базу данных MySQL из резервной копии Time Machine?

Я разрабатываю локально на 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, чтобы вернуть их в тот же самый момент времени.