程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql生產環境____主從同步修復案例

mysql生產環境____主從同步修復案例

編輯:MySQL綜合教程

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收到報警,發現問題

2014年XX月XX日收到mysql主從同步監控報警,登陸Slave,用show slavestatus \G; 查看結果如下,錯誤代碼為1146,錯誤描述為 “庫名.表名不存在,插入語句

\

 

圖1

3.2 分析解決問題

有上述slave截圖中的錯誤描述,表不存在。我們需要進一步驗證,在slave上執行show databases; 查看發現庫存在,如圖2,繼續輸入命令,

use 庫名;

show tables;

發現表也存在,既然都存在,那為什麼會報錯“表不存在呢”,邊思考,邊檢查,google了一番,有類似情況,但是解決辦法不通用。

冷靜,回頭仔細看錯誤提示,有新的發現,錯誤提示中的表名是大寫的,實際庫中的表名是小寫的。好吧,動手驗證一下,

select * from 庫名.表名; 表名同樣大寫,執行完畢,報錯信息圖2和 圖1 的報錯信息相同“表不存在”。

select * from 庫名.表名; 表名小寫,執行完畢,輸出正確結果,如圖2。

\

 

圖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導致。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved