今天在測試環境的業務系統修改了條數據,數據庫變化了,可是再次查詢時候,數據卻沒有變化,甚至將數據庫數據所有TRUNCATE了,仍是能夠查出數據,很奇怪。定位緣由是:更新在主庫,查詢在從庫,主從之間複製出現問題,致使修改數據不能及時展現。
解決思路方法以下:數據庫
- 先查詢主從庫狀態:show master status,show slave status; 發現從庫Slave_SQL_Running:No ,並且Last Error字段:Error 'Duplicate entry 'xxxx' for key on table'.
- 而後把entry報錯那行分別在主庫和從庫查詢,發現主庫不存在,可是從庫存在,因此致使主從數據不一樣步,SQL線程不工做了,由於從庫數據比主庫多,因此懷疑從庫能夠寫,因而檢查從庫只讀狀態,show variables like "%read_only%"; 發現從庫只讀的,由於測試環境,數據不是很重要,因此最終將Slave庫比主庫多的數據刪除。
-
而後從新啓動Slave. start slave; 等待主從同步完成,問題解決。ide
- 其餘查詢狀態的SQL:
show variables like "%commit%";
show variables like "%sync%";測試