如何从 Time Machine 备份恢复 MySQL 数据库?

如何从 Time Machine 备份恢复 MySQL 数据库?

我在 Mac 上进行本地开发,昨天我的电脑彻底死机了。硬盘坏了,似乎无法恢复。

我在 Time Machine 上有一个当前备份。

我的问题是:

我究竟该如何恢复该备份?我可以恢复的数据库的物理位置在哪里?

我并不经常从命令行使用 MySQL,但我熟悉控制台等。

据我了解,Time Machine 完整备份仅适用于损坏的机器,但在我有时间处理其他计算机之前,我需要 MySQL 备份,因此,当原始 MySQL 文件位于插入笔记本电脑的外部硬盘上时,我正在寻找一种方法来在我的笔记本电脑上恢复数据库。

谢谢!

答案1

我只是必须处理这个问题。

查找备份

在我的例子中,mysql 位于/usr/local/mysql/(其中最后一部分实际上是指向当前安装的 mysql 版本的符号链接)。它确实正确地备份了文件,并且整个结构都存在于备份中。

但出于某种原因,即使您在 Finder 中导航到正确的本地路径,如果您运行“Time Machine”,它也会显示不存在以前的备份。幸运的是,除非您将其排除,否则事实并非如此。

因此,要恢复备份,您必须导航到备份卷上的相应路径,该路径应类似于/Volumes/<yourbackupvolume>/Backups.backupdb/<host>/<revision>/Macintosh HD/usr/local/mysql/data/。在终端中操作最简单。cd找到正确的路径后,您可以使用open .该路径打开 Finder 窗口并使用拖放操作。但是 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/,这也可能由于权限问题而失败。

答案2

Time Machine 不是 SQL 备份,它所做的是备份构成 SQL 数据库的实际文件。

我不知道 Mac 如何处理备份打开的文件(我假设你将 MySQL 作为某种服务或守护进程运行)

您可能需要做的是使用时间机器 GUI 来带回数据库文件(只需浏览到您想要的版本并点击开始即可;时间机器将确保它带回原始+增量更改)

然后,您可能需要运行一些一致性工具来确保您的数据库是一致的。MySQL 应该内置了一些这样的工具,但我不是专家。MySQL 有事务日志吗?如果有,请使用 Time Machine 将它们拉回到完全相同的时间点。

相关内容