教你如何解決MySQL資料延遲跳動的問題
今天分析了另外一個關於資料庫延遲跳動的問題,也算是比較典型,這個過程中也有一些分析問題的方法和技巧工參考。 |
首先在高可用檢測中,有一套環境的檢測時斷時續,經過排查發現是資料庫產生了延遲,在登入到從庫show slave status檢視,會發現Seconds_behind_master的值是不斷跳動的,即從0~39~0~39這樣的頻率不斷跳動,讓人很搓火。
檢視資料庫的相關日誌發現竟然沒有任何可以參考的日誌記錄,怎麼分析這個問題呢,我們先來複現,於是我按照節奏抓取了3次問題出現的日誌,即透過show slave status連續監測,抓取show slave status輸出的結果儲存下來,這樣我們就得到了一個問題發生過程中的偏移量變化,而這個變化則是在SQLThread在回放過程中產生的問題。
比如下面的一段輸出,我擷取的是Slave端的relay log進行分析,相應的欄位為Relay_Log_Pos
Slave_IO_State: Waiting for master to send event Master_Host: xxxx Master_User: dba_repl Master_Port: 4306 Connect_Retry: 60 Master_Log_File: mysqlbin.000044 Read_Master_Log_Pos: 386125369 Relay_Log_File: slave-relay-bin.000066 Relay_Log_Pos: 386125580 Relay_Master_Log_File: mysqlbin.000044
所以很快得到了偏移量的變化情況:385983806 ,386062813 ,386125580
接著我使用mysqlbinlog開始分析這些日誌過程中的明細,根據如下的 可以很快得到轉儲的日誌中相關的表有3張。
# grep INSERT relaylog_xxxx.dump |awk '{print $3 " " $4}'|sed 's/INTO//g'|sort|uniq act_action_exec_info act_join_desc dic_subsidy_marketing_querylog_202008
我逐步分析了每張表的資料操作情況,得到的資訊還是比較有限,繼續做更進一步的分析,比如我們分析一下整個日誌中的事務量大小:
# mysqlbinlog slave-relay-bin.000066 | grep "GTID$(printf '\t')last_committed" -B 1 \ > | grep -E '^# at' | awk '{print $3}' \ > | awk 'NR==1 {tmp=$1} NR>1 {print ($1-tmp);tmp=$1}' \ > | sort -n -r | head -n 100 mysqlbinlog: [Warning] unknown variable 'loose-default-character-set=utf8' 5278 5268 5268 5268 5253 5253 5253 5253 5253
可以看到是5K左右,算是比較大了,而這些額外的資訊從哪裡獲得呢,我在主庫開啟了general_log,這樣就能夠得到更細粒度的操作日誌了。
進一步分析發現,整個業務使用了顯示事務的方式:SET autocommit=0,整個事務中包含了幾個大SQL,裡面儲存了很多操作日誌明細,而且在事務操作過程中還基於Mybatis框架呼叫了多次select count(1) from xxx的操作。
經過和業務溝通也基本明確了以上問題。
以上就是MySQL資料延遲跳動的問題解決的詳細內容。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2719035/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 伺服器延遲問題如何解決伺服器
- mysql的主從複製資料延遲問題MySql
- 美國伺服器延遲高怎麼辦,如何解決延遲問題伺服器
- MySQL主從資料庫同步延遲問題怎麼解決MySql資料庫
- Jtti:redis主從延遲資料不一致問題如何解決JttiRedis
- 如何解決 MySQL 主從延時問題?MySql
- MongoDB從庫延遲讀取資料問題的解決思路MongoDB
- MySQL之 從複製延遲問題排查MySql
- Google 怎麼解決長尾延遲問題Go
- 怎麼解決伺服器延遲問題伺服器
- MySQL 中讀寫分離資料延遲MySql
- MySQL 8.0能徹底解決困擾運維的複製延遲問題!MySql運維
- 如何避免MYSQL主從延遲帶來的讀寫問題?MySql
- 高頻面試:如何解決MySQL主從複製延時問題面試MySql
- 分析伺服器延遲的問題伺服器
- 《RabbitMQ》| 解決訊息延遲和堆積問題MQ
- Go GC:Go 1.5 將會解決延遲問題GoGC
- mysql同步問題之Slave延遲很大最佳化方法MySql
- 如何解決自動化切換資料庫的問題資料庫
- 【Mysql】Mysql負載過大,app訪問延遲MySql負載APP
- 【Mysql】Slave 延遲很大並且不動了MySql
- mysql亂碼的問題如何解決MySql
- 如何解決大資料安全問題大資料
- 如何解決資料庫配置問題資料庫
- 這套方法論,徹底終結MySQL同步延遲問題MySql
- MySQL主從複製延遲解決方案MySql
- mysql同步(複製)延遲的原因及解決方案MySql
- 疫情延遲 題解
- 寶塔皮膚mysql無法啟動問題如何解決MySql
- 【MySQL】常見slave 延遲原因以及解決方法MySql
- Mysql 非同步複製延遲的原因及解決方案MySql非同步
- Redis資料操作長延遲分析Redis
- 定時器(setTimeout/setInterval)最小延遲的問題定時器
- 關於延遲載入,立即載入的問題
- mysql的主從複製延遲問題--看這一篇就夠了MySql
- 教你如何解決PostgreSQL Array使用中的一些小問題SQL
- 如何解決MySQL 主從複製資料不一致問題MySql
- 【MySQL】六、常見slave 延遲原因以及解決方法MySql