1.背景
本人(若泽数据J哥)的媳妇,是个漂亮的妹子,同时也是一枚爬虫&Spark开发工程师。
前天,她的公司MySQL(阿里云ECS服务器),由于磁盘爆了加上人为的修复,导致各种问题,然后经过2天的折腾,终于公司的大神修复不了了。于是就丢给她了,顺理成章的就丢给我了。我想说,难道J哥这么出名吗?那为了在妹子面前不能丢我们真正大佬的神技,于是乎我就很爽快接了这个MySQL故障恢复,此次故障的是一个数据盘,1T。
这时的我,说真的并没有意识到,此事是如此的繁杂,特此写此博文记录一下,毕竟J哥我年纪也大了。
PS:
这里吐槽一下,并没有周日全备+周1~周6增量备份机制哟,不然恢复就爽歪歪了。
2.故障现象
1 | 查看表结构、查询表数据都如下抛错: |
3.尝试修复第一次,失败
3.1 使用repair命令修复表
1 | mysql> repair table wenshu.wenshu2018; |
3.2 谷歌一篇有指导意义的
https://stackoverflow.com/questions/68029/got-error-122-from-storage-engine
- 3.2.1 让其扩容数据磁盘为1.5T,试试,依旧这个错误;
- 3.2.2 临时目录修改为大的磁盘空间,试试,依旧这个错误;
- 3.2.3 取消磁盘限额,试试,依旧这个错误;
- 3.2.4 就是一开始的repair命令修复,试试,依旧这个错误;
这时的我,也无语了,什么鬼!谷歌一页页搜索验证,没有用!
4.先部署相同系统的相同版本的机器和MySQL
于是J哥,快速在【若泽数据】的阿里云账号上买了1台Ubuntu 16.04.6的按量付费机器
迅速部署MySQL5.7.26。
- 4.1 购买按量付费机器(假如不会购买,找J哥)
- 4.2 部署MySQL
1 | a.更新apt-get |
5.尝试先通过frm文件恢复表结构,失败
1 | a. 建立一个数据库,比如wenshu. |
6.尝试有没有备份的表结构恢复数据,失败
媳妇公司给出一个表结构,如下,经过测试无法恢复,原因就是无法和ibd文件匹配。
1 | DROP TABLE IF EXISTS cpws_batch; |
7.如何获取正确的表结构,这是【成功的第一步】
1 | $ curl -s get.dbsake.net > /tmp/dbsake |
对比Step6的表结构,感觉就差分区设置而已,坑!
这时,J哥有种信心,恢复应该小菜了。
8.由于恢复ECS机器是若泽数据账号购买,这时需要从媳妇公司账号的机器传输这张表ibd文件,差不多300G,尽管我们是阿里云的同一个区域同一个可用区,加上调大外网带宽传输,依然不能等待这么久传输!
9.要求媳妇公司购买同账户下同区域的可用区域的云主机,系统盘300G,没有买数据盘,先尝试做恢复看看,能不能成功恢复第一个表哟?【成功的第二步】
1 | 9.1首先需要一个跟要恢复的表结构完全一致的表,至关重要 |
10.给媳妇公司两个选择,这个很重要,在自己公司给领导做选择时,也要应该这样,多项选择,利弊说明,供对方选择
- 10.1 重新购买一台新的服务器,在初始化配置时,就加上1块1.5T的大磁盘。好处是无需挂盘操作,坏处是需要重新做第一个表,浪费3h;
- 10.2 购买1.5T的大磁盘,挂载这个机器上。好处是无需再做一次第一个表,坏处是需要修改mysql的数据目录指向为这个大磁盘。系统盘扩容最大也就500G,所以必须外加一个数据盘1.5T容量。
所以J哥是职场老手了!贼笑!
11.服务器加数据磁盘,1.5T,购买、挂载、格式化
接下来的操作是我媳妇独立完成的,这里表扬一下:
- 11.1 先买云盘 https://help.aliyun.com/document_detail/25445.html?spm=a2c4g.11186623.6.753.40132c30MbE8n8
- 11.2 再挂载云盘 到对应机器 https://help.aliyun.com/document_detail/25446.html?spm=a2c4g.11186623.6.756.30874f291pXOwB
- 11.3 最后Linux格式化数据盘 https://help.aliyun.com/document_detail/116650.html?spm=a2c4g.11186623.6.759.11f67d562yD9Lr
图2所示,df -h命令查看,大磁盘/dev/vdb1
12.MySQL修改数据目录为大磁盘,重新启动失败,解决
1 | 12.1 修改数据目录为大磁盘 |
13.开始指导我媳妇做第二个、第三个表,批量恢复,耗时共计16小时,全部恢复完成。
最后@若泽数据J哥总结一下:
- 表结构正确的获取;
- 机器磁盘规划提前思考;
- ibd数据文件恢复;
- 最后加上一个聪明的媳妇!(PS:老板会给媳妇涨薪水不🙅♂️)