一、錯誤日誌解析:
(1) 【error】1452:無法在外鍵的表插入參考主鍵沒有的資料
1452:無法在外鍵的表插入或更新參考主鍵沒有的資料。由於item_discovery.itemid欄位(外來鍵)參考了items.itemid欄位(主鍵),當要在item_discovery表插資料時,如果items表的主鍵沒有對應的資料,則無法插入,報1452錯誤。此時可以檢查參考的表的主鍵是否有主庫對應的資料,如果有,則插入參考的表相應的資料,再開啟複製恢復sql執行緒。
(2) 【error】1032:刪除或更新資料,從庫找不到記錄
1032:刪除或更新從庫的資料,從庫找不到記錄。此時,主庫的資料是比從庫新的,可以採取從庫新增相同的資料在開啟複製恢復sql執行緒。
(3) 【error】1062:從庫插入資料,發生唯一性衝突
1062:從庫插入資料,發生唯一性衝突。此時從庫已經有相同主鍵的資料,如果再插入相同主鍵值的資料則會報錯。可以檢視主庫的改行資料與從庫的要插入資料是否一致,如一致則跳過錯誤,恢復sql執行緒,如不一致,則以主庫為準,將從庫的該行記錄刪除,再開啟複製。
如果當前高可用架構為master-master,則以下均在從庫的操作都必須set sql_log_bin=0,避免從庫執行的語句同步到主庫(恢復時以主庫的資料為準)。
二、怎麼解決問題:
1.臨時解決方案(業務執行期間不適宜使用資料對比和修復工具)
【error】1452:
普通主從複製環境
從庫:主庫:
檢視主庫在出錯的相應位置的執行語句,可通過sql得出當時insert或者update的對應的主鍵值。
查詢item_discovery的外來鍵約束c_item_discovery_1參考的表items對應主鍵值的資料行。
從庫:在items表插入主庫查詢出來的資料。
基於gtid複製環境
與普通主從複製環境處理方式相同。
【error】1032:
發生1032可能是delete或者update時從庫沒有對應資料行,可以分兩種情況處理:
(1)如果是could not execute delete_rows,則可以直接跳過錯誤
普通主從複製環境
從庫:基於gtid複製環境
從庫:找出複製出錯時的executed_gtid_set,若出現多個,則選擇跟master_uuid相同的那一條。
(2)如果是could not execute update_rows,則需要在二進位制日誌找出出錯位置的sql,再找出該錶在主庫的對應的資料行,然後直接在從庫插入這條資料,開啟sql執行緒恢復。
普通主從複製環境
從庫:主庫:
檢視主庫在出錯的相應位置的執行語句,可通過sql得出當時update的對應的主鍵值。
查詢item_discovery的對應主鍵值的資料行。
從庫:在items表插入主庫查詢出來的資料。
基於gtid複製環境
與普通主從複製環境處理方式相同。
【error】1062:
普通主從複製環境
從庫:主庫:
檢視主庫在出錯的相應位置的執行語句,可通過sql得出當時insert的對應的主鍵值。
查詢trends_uint表對應主鍵值的資料行。
從庫:在trends_uint表刪除主庫查詢出來的資料。
基於gtid複製環境
與普通主從複製環境處理方式相同。
2.徹底解決方案
使用pt-table-checksum和pt-table-sync徹底修復資料不一致。
注意:使用pt工具包首先要安裝pt工具包和安裝perl模組。
(1) 從庫停止複製
(2) 在主庫建立校驗資訊表
(3) 在主庫用pt-table-checksum校驗主從資料一致性
在從庫執行以下語句,檢視last_error,發現資料不一致的表:
然後返回作業系統執行以下命令:
該命令可以檢視該錶是否發生資料不一致情況,若有,則使用pt-table-sync修復。
(4) 在主庫用pt-table-sync列印出修復不一致資料的sql(如果有外來鍵約束,修復資料應先從外來鍵參考的字段所屬表開始修復),後將修復語句在從庫執行。
三、優化建議
在複製由於1045、1032、1062的原因中斷後,應使用三.1的臨時解決方案,恢復複製後再在業務低谷使用pt-check-sum檢查資料一致性。
檢查完後可以在從庫執行這條語句檢視有無資料不一致表:
針對核心表,可以定製自動資料校驗指令碼,每週進行資料校驗,但必須要在業務低谷進行校驗哦!
推薦閱讀:
【乾貨】linux監控 sar命令解析
【乾貨】linux shell常用經典指令碼收藏
教你分分鐘搞定python之flask框架
網頁載入效能調優
IIS常見錯誤及解決
iis常見錯誤 1.http 錯誤 404.3 not found 解決辦法 windows 8系統,執行aspx頁面出現上述錯誤資訊,解決辦法如下 iis7 控制面板 開啟或關閉windows功能 internet資訊服務 全球資訊網服務 應用程式開發功能,勾選上 net擴充套件性 和 asp.n...
IIS常見錯誤及解決
iis常見錯誤 1.http 錯誤 404.3 not found 解決辦法 windows 8系統,執行aspx頁面出現上述錯誤資訊,解決辦法如下 iis7 控制面板 開啟或關閉windows功能 internet資訊服務 全球資訊網服務 應用程式開發功能,勾選上 net擴充套件性 和 asp.n...
mysql安裝及常見錯誤
mysql 設定mysql客戶端預設字符集 default character set utf8 mysqld 設定3306埠 port 3306 設定mysql的安裝目錄 basedir d apache2.4 mysql 設定mysql資料庫的資料的存放目錄 datadir d apache2....