百万级MySQL数据受损后的修复以及优化

2018-08-04 03:21:36
Reading:358
67GB的内容无论win7还是win10下都无法打开和用指令修复了。
当我准备重新生成时,忽然想到要导出原来准备好的基础数据,所以把这几十G打不开的表文件先移到其它目录的一个空文件夹,然后试试看能否找回基础数据。重启服务后,很顺利地打开了。我一下福如心至般想到,单独的坏表是否也可以这样救回来?马上动手处理,按新文件夹移回来后,重启服务,迫不及待地打开网址,点击这个新库——果然!几百万数据又回来了!
2018.04.19

下面谈谈MySQL数据文件受损后的修复

MySQL参考手册的第十五章讲述了MySQL自带的myisamchk的功能,以及如何使用它检查和修复你的MySQL数据文件。虽然这一章对于每个想要搭建一个强壮的MySQL服务的人都是推荐阅读的。

在我们继续之前,你必须意识到myisamchk程序对用来检查和修改的MySQL数据文件的访问应该是唯一的。如果MySQL服务正在使用某一文件,并对myisamchk正在检查的文件进行修改,myisamchk会误以为发生了错误,并会试图进行修复--这将导致MySQL服务的崩溃!这样,要避免这种情况的发生,通常我们需要在工作时关闭MySQL服务。作为选择,你也可以暂时关闭服务以制作一个文件的拷贝,然后在这个拷贝上工作。当你做完了以后,重新关闭服务并使用新的文件取代原来的文件。

如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次。


在进入MySQL的bin目录后,我先退出了MySQL服务程序,然后使用以下指令进行修复:

MYISAMCHK -r O:\sv\mysql\data\mydb1\xxx.MYI


下面是优化和修复后的截图:

处理的结果是七百多万数据由67G减小为36G,效果还是比较满意的。

About

When I was young
I'd listen to the radio
Waiting for my favorite songs
When they played I'd sing along
It made me smile
Those were such happy times
And not so long ago
How I wondered where they'd gone
But they're back again
Just like a long lost friend
All the songs I loved so well