Chinaunix

标题: 检测mysql数据库中坏表脚本 [打印本页]

作者: bluesmile11    时间: 2012-08-09 22:00
标题: 检测mysql数据库中坏表脚本
开始学习shell有些日子了,磕磕绊绊能写一些简单的shell了,最近写了一个检测mysql中db是否存在坏表的脚本。
可能大家都碰到过这种情况,在更换服务器或者硬盘。将DB拉到别的机器上,在拉回来后。可能多多少少都存在坏表的情况,有时在业务系统恢复后,会影响业务。在db恢复后,用脚本检测整个db中的所有表。并报告坏表。目前还没有写入自动修复功能。
检测mysql数据表.zip (1.27 KB, 下载次数: 95)

也请朋友们帮忙看看,这个脚本还有哪里可以优化的地方与建议 !刚开始写,没有考虑优化等等,先想着把功能实现。呵呵。

也顺道感谢坛子里面的童靴们,热情的解答我发的帖子,帮助不少。特别感谢dn833、斑竹等等童鞋无论是在群里或者坛子里只要有时间就会回答我们的疑问。

关于修表这方面大家一般怎么做呢?就是单表蛮大的情况,全部过G,这种表修复起来时间长,而且容易造成锁表。一般恢复线上业务也都是时间蛮紧的。
作者: rdcwayx    时间: 2012-08-10 09:39
谢谢分享
作者: zooyo    时间: 2012-08-11 11:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 周应侯    时间: 2014-06-03 14:16

谢谢分享                     
作者: expert1    时间: 2014-06-03 14:36
回复 1# bluesmile11


    check table太慢了,你看下mysql这个database有个表记录所有表的status,检查这个应该就可以了,具体是那个,不记得了。

  此外,db的机器做raid 10, 还有其他技术手段来减少表的记录大小。
作者: damcool    时间: 2014-06-03 15:39
感觉数据库没有正常关闭
作者: Buring__    时间: 2014-06-03 16:26
试着check 的时候 加上他的参数

QUICK

不扫描行,不检查错误的链接。

FAST

只检查没有被正确关闭的表。

CHANGED

只检查上次检查后被更改的表,和没有被正确关闭的表。

MEDIUM

扫描行,以验证被删除的链接是有效的。也可以计算各行的关键字校验和,并使用计算出的校验和验证这一点。

EXTENDED

对每行的所有关键字进行一个全面的关键字查找。这可以确保表是100%一致的,但是花的时间较长。
作者: dn833    时间: 2014-06-03 20:11
哥干了些神马。。。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2