mysql 迁移表时忽略索引_Mysql迁移新环境索引损坏
技術(shù)支持產(chǎn)品重新部署一套環(huán)境。由運(yùn)維遷移后Mysql發(fā)現(xiàn)好多表使用不了
慢sql:
> select n.news_id,n.url,n.source_id,n.tmcreate,n.caption,s.source_name from wly_news as n left join wly_source as s on n.source_id=s.source_id where 1 and s.source_id in (68663,68666,68667,68669,68684,68755) order by n.news_id desc limit 0,10
查看日志:
[ERROR] /usr/libexec/mysqld: Incorrect key file for table '/tmp/#sql_2f1c_21.MYI'; try to repair it
好吧,準(zhǔn)備修復(fù)數(shù)據(jù)吧。
和運(yùn)維溝通……扯了半天沒(méi)解決問(wèn)題。最終自己解決:
嘗試鍵了幾個(gè)索引,依然不行適得其反(具體可以百度,多表聯(lián)查索引問(wèn)題)……
于是刪除新增索引,使用表修復(fù)命令:
數(shù)據(jù)表大部分使用的是MyISAM。眾所周知,MyISAM表在服務(wù)器意外宕機(jī)或者mysqld進(jìn)程掛掉以后,MyISAM表會(huì)損壞,數(shù)據(jù)小的話修復(fù)還比較快,但是數(shù)據(jù)如果有10G以上,那就悲劇了。那我們?nèi)绾渭涌靣epair table快速高效執(zhí)行呢?下面我們來(lái)看看解決方法。
首先通過(guò)repair table修復(fù):
mysql> repair table test;
+—————+——–+———-+———————————————————+
| Table | Op | Msg_type | Msg_text |
+—————+——–+———-+———————————————————+
| test.test | repair | Error | Incorrect key file for table ‘test’; try to repair it |
| test.test | repair | error | Corrupt
如果還是沒(méi)用,運(yùn)行下面命令
mysql> repair table test USE_FRM;
+—————+——–+———-+———————————————————+
| Table | Op | Msg_type | Msg_text |
+—————+——–+———-+———————————————————+
| test.test | repair | Error |Number of rows changed from 0 to 110423 |
| test.test | repair | status | OK
按理應(yīng)該可以了(這一步已經(jīng)解決問(wèn)題)。
如果還是沒(méi)用,則退出mysql,執(zhí)行如下修復(fù)動(dòng)作:
myisamchk -of /var/lib/mysql/test/test.MYI
myisamchk -r /var/lib/mysql/test/test.MYI
myisamchk safe-recover /var/lib/mysql/test/test.MYI
再重啟mysql后應(yīng)該可以正常了。
總結(jié)
以上是生活随笔為你收集整理的mysql 迁移表时忽略索引_Mysql迁移新环境索引损坏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 古画(说一说古画的简介)
- 下一篇: 顺序志愿录取规则及填报技巧(有什么窍门)