Table 'mysql.plugin' doesn't exist引发de血案
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
? ? ? ?回過頭想想,一開始查下mysql_install_db這個命令,也不至于承受著巨大的壓力折騰兩天,不得不說,折騰下來的收獲真的不小,好記性不如爛筆頭,記錄下來共勉。?
?? 故事的開頭是用./mysqld_safe命令起不來MySQL,錯誤提示:ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock',查看/tmp目錄中確實沒有mysql.sock,又看了log-err:[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.?“Please run mysql_upgrade to create it”,如果一開始注意到這句話用mysql_upgrade 命令會不會就沒有后頭的事了,查了下這個命令,還是沒太明白這個命令在此處用的作用,internet上都是說MySQL升級時使用。[采用MySQL_upgrade升級授權(quán)表方式升級]?
??當(dāng)時使用了./mysql_install_db命令,我不知道師弟用的什么參數(shù),指定的配置文件肯定還是/etc/my.cnf,(沒想到mysql_install_db命令的結(jié)果是新建了個數(shù)據(jù)庫實例,并且一般會新建一個xxx.cnf文件)。然后也新指定了datadir,basedir為data目錄(以前的在var目錄),生成了新的授權(quán)表,my.cnf。mysqld_safe可以起來了,感覺自己棒棒的,但是當(dāng)我們登陸phpmyadmin后徹底傻了,以前的數(shù)據(jù)庫都沒有了,沒有第一時間去查mysql_install_db命令的應(yīng)用場景,滿腦子是闖大禍了,數(shù)據(jù)被刪了,要怎么去恢復(fù)數(shù)據(jù)庫,要不要請示項目leader,自己先補救再說。。。?
??恢復(fù)數(shù)據(jù)庫之旅開始,我們竟然找到了以前/var目錄下的所有數(shù)據(jù),但是沒有想到直接更改my.cnf配置到這個目錄就可以,而是堅定的認(rèn)為mysql的數(shù)據(jù)庫都是默認(rèn)在data目錄的,不能更改,var下的只是副本或者啥的,還是太年輕了T T。我們的做法是用var下的數(shù)據(jù)去data目錄下恢復(fù),使用.frm文件恢復(fù)了表結(jié)構(gòu),按internet上說用ibdata1去恢復(fù)數(shù)據(jù),但是就是不成功,都沒想到用mysql-bin.00000x文件去恢復(fù),還是因為太年輕T T。中間還有一個重大的插曲,ssh不能連接到阿里云服務(wù)器了,沒辦法,只好將這件事告訴了項目leader,好的是他讓我別著急,我能不著急嗎,這數(shù)據(jù)要是真沒了責(zé)任都是我的T T。之后leader給阿里云打電話,工作人員說云上有近三天的快照,leader說他晚上去恢復(fù)到某一天快照,讓我們不要擔(dān)心。確實是松了口氣,剛好也到下班時間,晚上吃了頓好的,以緩解我白天的壓力。?
??然而第二天一大早leader打電話說,快照里頭沒有還是怎么的,總之就是通過快照不行,還是得自己搞。ssh鏈接不了是因為Linux的var目錄被誰刪了,扶額,哪個缺心眼干的,沒事喜歡亂刪。又開始折騰著恢復(fù)數(shù)據(jù),internet上的方法看的多了,大都是復(fù)制之類的,我就想能不能直接指定配置文件中的路徑到./mysql/var呢,反正所有文件都是從var目錄cp的。說干就干,mysql起來了,但是登陸進(jìn)去后每個數(shù)據(jù)庫是空的,然而磁盤上每個數(shù)據(jù)庫中是有.frm文件的,查看日志,”Cannot find or open table xxx from the internal data dictionary of InnoDB through the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data files but hava forgotton to delete the corresponding .frm……, the table contains indexes that this version of the engine doesn’t support.”這段英語說個啥信息,先不管,先給mysql用戶賦予權(quán)限試試,重啟,又看到了熟悉的數(shù)據(jù)熟悉的表!!!結(jié)束~?
??后記:?
??今天(2016/4/25)大早上,甲方工作人員告訴我錄入數(shù)據(jù)提交不成功,我看到控制臺報:#1030-Get error -1 from storage engine,原來是前幾天捯飭MySQL的時候在my.cnf加了一個參數(shù)innodb_force_recovery=4,插入操作被忽略。注釋掉或者設(shè)置為0就可以執(zhí)行正常操作了。
轉(zhuǎn)載于:https://my.oschina.net/u/2265029/blog/665406
總結(jié)
以上是生活随笔為你收集整理的Table 'mysql.plugin' doesn't exist引发de血案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秒杀设计--mysql的锁机制应用和re
- 下一篇: 控件不能与用户交互的原因