標籤:mysql主從修複
一、 硬體環境
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)Xeon(R) CPU E5-2640 v2 @ 2.00GHz
MEM 64G,disk 4*2.5 SAS 網路4* 千兆
二、 軟體環境
系統軟體:
Master: cento5.8
Slave: cento5.8
資料庫軟體:mysql-5.5.10
三、 問題現象
3.1收到警示,發現問題
某天收到mysql主從同步監控警示,登陸Slave,用show slavestatus \G;查看結果如下,錯誤碼為1146,錯誤描述為“庫名.表名不存在,插入語句”
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/4C/50/wKiom1Q7SXqiTXOBAAQlh1RwSnA749.jpg" title="mysql_err" alt="wKiom1Q7SXqiTXOBAAQlh1RwSnA749.jpg" />
圖1
3.2分析解決問題
有上述slave中的錯誤描述,表不存在。我們需要進一步驗證,在slave上執行show databases; 查看發現庫存在,2,繼續輸入命令,
use 庫名;
show tables;
發現表也存在,既然都存在,那為什麼會報錯“表不存在呢”,邊思考,邊檢查,google了一番,有類似情況,但是解決辦法不通用。
冷靜,回頭仔細看錯誤提示,有新的發現,錯誤提示中的表名是大寫的,實際庫中的表名是小寫。好吧,動手驗證一下,
select * from 庫名.表名;表名同樣大寫,執行完畢,報錯資訊圖2和圖1 的報錯資訊相同“表不存在”。
select * from 庫名.表名;表名小寫,執行完畢,輸出正確結果,2。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/4C/50/wKiom1Q7SceT8YLUAAHq00O2J_M670.jpg" title="m_s1 - 副本.JPG" alt="wKiom1Q7SceT8YLUAAHq00O2J_M670.jpg" />
圖2
找到原因就好解決問題了。
解決:
stop slave;
show slavestatus \G;
從新複製一個secureCRT串連,編輯my.cnf設定檔,
在[mysqld]節點下,加入一行:lower_case_table_names=1
儲存退出。
/etc/init.d/mysqldrestart
回到資料庫操作命令列,執行 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導致。
本文出自 “linux系統營運” 部落格,請務必保留此出處http://1234qwer.blog.51cto.com/7915345/1563151
mysql生產環境___主從同步修複案例