重装系统或MySQL程序之后,如何恢复使用旧文件数据

本文摘自 勾三股四 更早时期的 不老歌 博客。


今天办公室的私人数据库出了点小问题,对mysql进行了重装,但由于疏忽了部分配置信息,导致旧数据没有办法继续使用了,MySQL数据库服务无法启动。险些及时找到了问题所在,虚惊一场。事后觉得这类问题还是很容易遇到的,所以打算写个简单的备忘。

我的mysql是在windows下,用msi安装包直接安装的,我们经常会自定义或配置的信息有这么几个:
1. 程序目录
2. Server Datafiles 目录
3. InnoDB Tablespace 目录
4. 默认编码
5. 管理员密码
6. 各种封闭性选项(多为三选一或二选一)

对于6,估计相同的人安装会选择相同的选项,出错的几率应该不大
对于5,是比较有特征的信息且是一定需要设置的,出错的几率也不大
对于1,这个目标太过明显了,估计大家也不会装错,就算装错应该很快反映的过来吧……

那就剩下2、3和4了

我个人习惯,会把4设为utf-8(默认值不是这个,貌似是latin1)
另外2和3那两个目录很重要,一定要设置得和你的数据所在的目录相吻合,才可以正常工作。两者的设置时机不尽相同,前者在设置安装程序目录时一并设置,后者在安装完成后的初始化配置向导中进行设置。

这次虚惊一场,就是因为重装MySQL之后Server Datafiles目录忘记设置了,结果默认的安装目录里的数据是空白的,和InnoDB Tablespace目录信息无法匹配。导致1076错误,同时MySQL无法启动。

最后,提供一个最可靠的办法,就是寻找my.ini文件。不同版本的MySQL,它的my.ini文件可能在程序目录中,也可能在个人文件夹中或windows文件夹中,如果找不到,可以在本地硬盘里搜索。上述所有的设置项基本都可以在这个ini文件中找到。可以通过这个文件确认修改结果。