Wordpress用了这么长时间,偶尔会想起来备份下数据,上次是用wp的xml,这次把自己机器的环境配的跟主机提供商基本一样了,正好那边有mysql数据库打包备份的服务,就尝试了一下。可不管我下载哪个时间点的备份包,里面都只有wp表的10个frm文件,copy到我的数据库目录后访问web,没有任何数据!直接搞不懂了。以前觉得用mysql最大的方便就是数据库文件可以直接复制粘贴,后来就推荐周围的人都用。可这么长时间我并没有去仔细研究这个广受好评的产品,我几乎不做后端开发,可以说使用的情况都不多。于是这次copy表没效果,完全不知道为什么。

遂与小力讨论,他也觉得奇怪。而且他跟我用的一个服务商,平常他备份从来没遇到过什么问题。于是让他下一份他数据库的备份给我对比,打开rar包,比我的wp多处N个文件!仔细看,也都是wp的表名,但是每个表名对应3个文件:.frm,.myd,.myi。问题就出在这里了,从字面看出,frm是表结构,myd是mysql数据文件,myi应该是索引吧。而我备份的数据库只有10个表的frm结构,当然看不到数据了!

很郁闷,为什么同一个服务商我的数据库就文件不全?问题我网站上的数据是有的啊!暂时没办法,去找服务商咨询,于是他把我描述的问题验证了,并再次陈述给我——“的确没有myd文件,无法备份”!我晕~!找了做我服务商的朋友,他说继续发问题让技术那边解决,我再次问他们如何彻底解决我备份数据库的问题,结果回答还是我问题的陈述——“没法备份”!要不是看着朋友的面子,早骂开来了!算了,这样的服务商的技术的确没法让人信赖,还是去百度寻求答案!

输入问题,“mysql 没有 myd”,几个情况提到了也仅提到了一个有价值的单词——innoDB。这不就是建表的时候选择数据引擎的那句话嘛,sql语句里面一直都有,却从来没有问过为什么要写这个。继续根据这个关键词挖掘下去,终于找到了我要的答案,这是mysql的两种引擎的差异,innoDB和MyISAM。以前就听说innoDB被收购了,mysql自己弄出了MyISAM,用在自己的6.0版本上。

看后终于有一点点理解。不过“详解”的“详”有点假,“简单测试”的“简单”却很实在。找到了问题所在,也找到最后的解决方案,在phpmyadmin里输入sql语句:

ALTER TABLE `your_table_name` TYPE=MYISAM;

把所有表的引擎转换成MyISAM,储存数据的myd文件就出来了。在本地测试没有问题后上服务器执行了一遍,再次备份数据库,打包里面就有myd文件了!