这个周末,我将 Windows 8 工作站升级到了 Windows 8.1。这是一个开发工作站,它有一个本地托管的 MySQL 5.6 实例,用于 Web 开发工作。
更新完成后,我发现 MySQL 服务没有启动……不仅如此,该服务完全消失了。它不再出现在“服务”列表中。
所有的二进制文件仍然存在于预期的位置C:\Program Files\MySQL\MySQL Server 5.6\bin
,但C:\Program Files\MySQL\MySQL Server 5.6\data
文件夹看上去小得可疑...ibdata1 文件小于 100MB,而该工作站的 InnoDB 数据库表中有 GB 的数据。
果然,当我手动启动 MySQL 服务器时,它似乎被重置为全新的 MySQL 安装。除了默认数据库(即 mysql、information_schema、performance_schema)外没有其他数据,唯一的用户是没有密码的“root”。
我的第一个想法是回滚到更新之前的系统还原点,但不幸的是,系统还原似乎已关闭,或者所有还原点都被 8.1 升级清除了。
我不知道是什么原因造成的。这就像 Windows 8.1 升级“重置”了 MySQL 安装。我已经安装并再次运行了服务,但所有数据怎么办?它就这么消失了吗?如果有警告就好了。也许这篇文章只是对其他人的一个警告(强制参考),但我仍然希望有人能告诉我如何恢复我的数据......
答案1
我无法解释为什么服务消失了,但我确实弄清楚了数据发生了什么。
不知何故,我的 my.ini 文件被彻底删除了。我拿到该文件的副本后,发现 datadir 值被设置为C:/ProgramData/MySQL/MySQL Server 5.6/data\
这不是 的默认位置C:\Program Files\MySQL\MySQL Server 5.6\data
。但是,这是 MySQL 安装设置的位置。
因此,最初安装 MySQL 时设置了一个非默认数据目录(由安装程序设置,而不是用户干预)。然后,Windows 8.1 升级清除了服务和 my.ini 文件(指向非默认数据目录),因此当 MySQL 重新启动时,它会在默认目录中查找,但找不到任何内容,因此所有数据似乎都丢失了。
总而言之,解决方案是:
- 通过重新安装 mysql 服务
mysqld --install
- 恢复 my.ini 文件。顺便说一下,my.ini 的副本位于
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
希望这能帮助遇到同样问题的人!