起因調查:
收到大量郵件報警想必事出有因,就問同事到底發生了什么?同事登錄從庫查看,發現出現如下報錯提示,表示與主庫同步失敗,一直卡在哪里,看他弄了兩個多小時,問題越來越多,解決一個恢復平靜了一兩分鍾又不行了。。。。於是報警的郵件又是一封又一份。。。於是向我求助。登錄從庫后發現:
其中一台從庫報錯內容為:
1 mysql> show slave status\G; 2 3 Slave_IO_Running: Yes 4 Slave_SQL_Running: No 5 6 Last_Errno: 1008 7 8 Last_Error: Error 'Can't drop database 'lcp'; database doesn't exist' on query. Default database: 'lcp'. Query: 'drop database lcp'
創建庫失敗,
查看日志
1 mysql> SHOW GLOBAL VARIABLES LIKE '%log%'; 2 3 | log_error | /application/mysql/data/db03.err 日志路徑並沒有動,默認 4 5 | log_warnings | 1 還好啟用日志了。。。
切一個窗口查看日志:
發現錯誤報告,不能與主庫同步,上一條報告lcp庫已存在。。納悶你拿我名字當庫名干啥。。。狠批一頓。(后來得知是覺得我名字有威懾力,嚇唬嚇唬服務器,笑哭...)
言歸正傳
我看了一下他的歷史操作記錄,想創建“lcp”庫卻發現此庫已存在,想刪掉“lcp”庫,卻發現系統報錯此庫不存在。然后我就很郁悶的問他你到底對服務器做了啥!!!
真是不怕沒腦子的隊友,,就怕。。。。哈哈,當然開個玩笑,排錯也是成長的過程,我很喜歡我這個隊友,他經常給我提供成長的空間。(Ps:不要輕易模仿!!尤其是生產環境!!!)
1 160524 10:53:41 [Warning] Slave: Can't create database 'min'; database exists Error_code: 1007 2 160524 10:53:41 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-b 3 in.000758' position 1077 4 160524 11:53:17 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
於是我繼續往上翻錯誤日志,發現一條類似的提示:min庫已存在,無法完成創建。當時似乎想到了什么。就問了一句,你是不是在兩台mysql服務器上同時創建了min庫?豬一樣的隊友給我的回答竟然是:“是!”!!!!!好吧原諒他是新手。既然問題找到了方法自然就簡單了,還好是其中一台從庫,不會造成很大的影響,於是選擇最簡單的辦法:
解決方案:
mysql> slave stop;
Query OK, 0 rows affected (0.01 sec)
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Query OK, 0 rows affected (0.00 sec)
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
至此解決完成,雖然用了規避的方法去解決有點不太光明磊落(1007可以忽略),但是排錯思路一定要清晰,雖說不是生產環境,如果要是生產環境超出5分鍾的排措時間都不是一個合格的運維人應該做的事情,此處發一篇博文也給自己存個檔,順便幫助一下需要的人。
