Table 'mysql.plugin' doesn't exist引发de血案
2019獨角獸企業重金招聘Python工程師標準>>>
? ? ? ?回過頭想想,一開始查下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升級授權表方式升級]?
??當時使用了./mysql_install_db命令,我不知道師弟用的什么參數,指定的配置文件肯定還是/etc/my.cnf,(沒想到mysql_install_db命令的結果是新建了個數據庫實例,并且一般會新建一個xxx.cnf文件)。然后也新指定了datadir,basedir為data目錄(以前的在var目錄),生成了新的授權表,my.cnf。mysqld_safe可以起來了,感覺自己棒棒的,但是當我們登陸phpmyadmin后徹底傻了,以前的數據庫都沒有了,沒有第一時間去查mysql_install_db命令的應用場景,滿腦子是闖大禍了,數據被刪了,要怎么去恢復數據庫,要不要請示項目leader,自己先補救再說。。。?
??恢復數據庫之旅開始,我們竟然找到了以前/var目錄下的所有數據,但是沒有想到直接更改my.cnf配置到這個目錄就可以,而是堅定的認為mysql的數據庫都是默認在data目錄的,不能更改,var下的只是副本或者啥的,還是太年輕了T T。我們的做法是用var下的數據去data目錄下恢復,使用.frm文件恢復了表結構,按internet上說用ibdata1去恢復數據,但是就是不成功,都沒想到用mysql-bin.00000x文件去恢復,還是因為太年輕T T。中間還有一個重大的插曲,ssh不能連接到阿里云服務器了,沒辦法,只好將這件事告訴了項目leader,好的是他讓我別著急,我能不著急嗎,這數據要是真沒了責任都是我的T T。之后leader給阿里云打電話,工作人員說云上有近三天的快照,leader說他晚上去恢復到某一天快照,讓我們不要擔心。確實是松了口氣,剛好也到下班時間,晚上吃了頓好的,以緩解我白天的壓力。?
??然而第二天一大早leader打電話說,快照里頭沒有還是怎么的,總之就是通過快照不行,還是得自己搞。ssh鏈接不了是因為Linux的var目錄被誰刪了,扶額,哪個缺心眼干的,沒事喜歡亂刪。又開始折騰著恢復數據,internet上的方法看的多了,大都是復制之類的,我就想能不能直接指定配置文件中的路徑到./mysql/var呢,反正所有文件都是從var目錄cp的。說干就干,mysql起來了,但是登陸進去后每個數據庫是空的,然而磁盤上每個數據庫中是有.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用戶賦予權限試試,重啟,又看到了熟悉的數據熟悉的表!!!結束~?
??后記:?
??今天(2016/4/25)大早上,甲方工作人員告訴我錄入數據提交不成功,我看到控制臺報:#1030-Get error -1 from storage engine,原來是前幾天捯飭MySQL的時候在my.cnf加了一個參數innodb_force_recovery=4,插入操作被忽略。注釋掉或者設置為0就可以執行正常操作了。
轉載于:https://my.oschina.net/u/2265029/blog/665406
總結
以上是生活随笔為你收集整理的Table 'mysql.plugin' doesn't exist引发de血案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秒杀设计--mysql的锁机制应用和re
- 下一篇: 控件不能与用户交互的原因