<b>一、 </b><b>硬體環境</b><b></b>
Master: Dell R720 Intel(R)
Xeon(R) CPU E5-2640 v2 @ 2.00GHz
MEM 64G,disk 4*2.5 SAS 網絡4* 千兆
Slave: Dell R720 Intel(R)
<b>二、 </b><b>軟體環境</b><b></b>
系統軟體:
Master: cento5.8
Slave: cento5.8
資料庫軟體:mysql-5.5.10
<b>三、 </b><b>問題現象</b><b></b>
<b>3.1</b><b>收到報警,發現問題</b><b></b>
某天收到mysql主從同步監控報警,登陸Slave,用<b>show slave</b>
status \G; 檢視結果如下,錯誤代碼為1146,錯誤描述為 “<b>庫名</b><b>.</b><b>表名</b><b> </b><b>不存在,插入語句</b>”

圖1
<b>3.2 </b><b>分析解決問題</b><b></b>
有上述slave截圖中的錯誤描述,表不存在。我們需要進一步驗證,在slave上執行show databases; 檢視發現庫存在,如圖2,繼續輸入指令,
use 庫名;
show tables;
發現表也存在,既然都存在,那為什麼會報錯“表不存在呢”,邊思考,邊檢查,google了一番,有類似情況,但是解決辦法不通用。
冷靜,回頭仔細看錯誤提示,有新的發現,錯誤提示中的表名是大寫的,實際庫中的表名是小寫的。好吧,動手驗證一下,
select * from 庫名.表名; 表名同樣大寫,執行完畢,報錯資訊圖2和 圖1 的報錯資訊相同“表不存在”。
select * from 庫名.表名; 表名小寫,執行完畢,輸出正确結果,如圖2。
圖2
找到原因就好解決問題了。
<b>解決:</b><b></b>
stop slave;
show slave
status \G;
從新克隆一個secureCRT連接配接,編輯my.cnf配置檔案,
在[mysqld]節點下,加入一行: lower_case_table_names=1
儲存退出。
/etc/init.d/mysqld
restart
回到資料庫操作指令行,執行 start slave;show slave status\G;開啟同步,發現報錯資訊消失,同步恢複。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
登陸master端,發現master 的my.cnf配置中有lower_case_table_names=1
最後總結原因:slave端my.cnf配置缺少lower_case_table_names=1導緻。