0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分析解決MySQL數(shù)據(jù)庫的數(shù)據(jù)延遲跳動(dòng)

如意 ? 來源:楊建榮的學(xué)習(xí)筆記微信公 ? 作者:楊建榮 ? 2020-08-20 14:18 ? 次閱讀

今天分析了另外一個(gè)關(guān)于數(shù)據(jù)庫延遲跳動(dòng)的問題,也算是比較典型,這個(gè)過程中也有一些分析問題的方法和技巧工參考。

首先在高可用檢測中,有一套環(huán)境的檢測時(shí)斷時(shí)續(xù),經(jīng)過排查發(fā)現(xiàn)是數(shù)據(jù)庫產(chǎn)生了延遲,在登錄到從庫show slave status查看,會發(fā)現(xiàn)Seconds_behind_master的值是不斷跳動(dòng)的,即從0~39~0~39這樣的頻率不斷跳動(dòng),讓人很搓火。

查看數(shù)據(jù)庫的相關(guān)日志發(fā)現(xiàn)竟然沒有任何可以參考的日志記錄,怎么分析這個(gè)問題呢,我們先來復(fù)現(xiàn),于是我按照節(jié)奏抓取了3次問題出現(xiàn)的日志,即通過show slave status連續(xù)監(jiān)測,抓取show slave status輸出的結(jié)果保存下來,這樣我們就得到了一個(gè)問題發(fā)生過程中的偏移量變化,而這個(gè)變化則是在SQLThread在回放過程中產(chǎn)生的問題。

比如下面的一段輸出,我截取的是Slave端的relay log進(jìn)行分析,相應(yīng)的字段為Relay_Log_Pos

分析解決MySQL數(shù)據(jù)庫的數(shù)據(jù)延遲跳動(dòng)

所以很快得到了偏移量的變化情況:385983806 ,386062813 ,386125580

接著我使用mysqlbinlog開始分析這些日志過程中的明細(xì),根據(jù)如下的命令可以很快得到轉(zhuǎn)儲的日志中相關(guān)的表有3張。

分析解決MySQL數(shù)據(jù)庫的數(shù)據(jù)延遲跳動(dòng)

我逐步分析了每張表的數(shù)據(jù)操作情況,得到的信息還是比較有限,繼續(xù)做更進(jìn)一步的分析,比如我們分析一下整個(gè)日志中的事務(wù)量大小:

分析解決MySQL數(shù)據(jù)庫的數(shù)據(jù)延遲跳動(dòng)

可以看到是5K左右,算是比較大了,而這些額外的信息從哪里獲得呢,我在主庫開啟了general_log,這樣就能夠得到更細(xì)粒度的操作日志了。

進(jìn)一步分析發(fā)現(xiàn),整個(gè)業(yè)務(wù)使用了顯示事務(wù)的方式:SET autocommit=0,整個(gè)事務(wù)中包含了幾個(gè)大SQL,里面存儲了很多操作日志明細(xì),而且在事務(wù)操作過程中還基于Mybatis框架調(diào)用了多次select count(1) from xxx的操作。

經(jīng)過和業(yè)務(wù)溝通也基本明確了以上問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3712

    瀏覽量

    64030
  • 延遲
    +關(guān)注

    關(guān)注

    1

    文章

    70

    瀏覽量

    13482
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    789

    瀏覽量

    26292
收藏 人收藏

    評論

    相關(guān)推薦

    mysql怎么新建一個(gè)數(shù)據(jù)庫

    mysql怎么新建一個(gè)數(shù)據(jù)庫 如何新建一個(gè)數(shù)據(jù)庫MySQL中 創(chuàng)建一個(gè)數(shù)據(jù)庫MySQL中的基
    的頭像 發(fā)表于 12-28 10:01 ?716次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—未開啟binlog的Mysql數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 本地服務(wù)器,windows server操作系統(tǒng) ,部署有mysql單實(shí)例,數(shù)據(jù)庫引擎類型為innodb,
    的頭像 發(fā)表于 12-08 14:18 ?938次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—未開啟binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    eclipse怎么連接數(shù)據(jù)庫mysql

    連接Eclipse和MySQL數(shù)據(jù)庫可以通過JDBC(Java Database Connectivity)來實(shí)現(xiàn)。以下是詳細(xì)步驟: 下載并安裝MySQL數(shù)據(jù)庫:你首先需要下載并安裝
    的頭像 發(fā)表于 12-06 11:06 ?1046次閱讀

    MySQL數(shù)據(jù)庫的url地址

    MySQL數(shù)據(jù)庫的URL地址是用于連接到MySQL服務(wù)器的地址。URL是一種統(tǒng)一資源定位符,用于指定特定資源的位置和訪問方式。MySQL數(shù)據(jù)庫
    的頭像 發(fā)表于 12-06 10:58 ?2154次閱讀

    mysql數(shù)據(jù)庫基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),經(jīng)常用于存儲、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)的詳細(xì)解釋。 登錄
    的頭像 發(fā)表于 12-06 10:56 ?445次閱讀

    mysql數(shù)據(jù)庫備份與還原

    MySQL是一種常見的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),用于存儲和管理數(shù)據(jù)。備份和還原數(shù)據(jù)庫是非常重要的操作,可以保護(hù)數(shù)據(jù)免受丟失或損壞的影響。本文將詳
    的頭像 發(fā)表于 11-23 14:32 ?1018次閱讀

    MySQL數(shù)據(jù)庫基礎(chǔ)知識

    MySQL 是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是目前最流行的數(shù)據(jù)庫之一。MySQL 提供了一種結(jié)構(gòu)化的方法來管理大量的數(shù)據(jù),并且具有高效、
    的頭像 發(fā)表于 11-21 11:09 ?837次閱讀

    mysql數(shù)據(jù)庫命令大全

    MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它擁有豐富的命令來管理和操作數(shù)據(jù)庫。以下是一份詳盡、詳實(shí)、細(xì)致的MySQL數(shù)據(jù)庫命令大全,希望對您有所
    的頭像 發(fā)表于 11-16 16:39 ?1178次閱讀

    數(shù)據(jù)庫mysql基本增刪改查

    MySQL是一種開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),常用于Web應(yīng)用程序的數(shù)據(jù)存儲和管理。通過使用MySQL,用戶可以進(jìn)行數(shù)據(jù)的增刪改查操作,從而實(shí)
    的頭像 發(fā)表于 11-16 16:35 ?1355次閱讀

    mysql數(shù)據(jù)庫的增刪改查sql語句

    MySQL是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),是許多網(wǎng)站和應(yīng)用程序的首選數(shù)據(jù)庫。在MySQL中,我們可以使用SQL(結(jié)構(gòu)化查詢語言)進(jìn)行數(shù)據(jù)
    的頭像 發(fā)表于 11-16 15:41 ?1021次閱讀

    mysql是一個(gè)什么類型的數(shù)據(jù)庫

    MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),用于存儲和管理大量結(jié)構(gòu)化數(shù)據(jù)。它被廣泛用于各種應(yīng)用程序和網(wǎng)站的后端,包括電子商務(wù)平臺、社交媒體網(wǎng)站、金融系統(tǒng)等等。MySQL的特點(diǎn)是
    的頭像 發(fā)表于 11-16 14:43 ?1440次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MySQL數(shù)據(jù)庫表誤刪除記錄的數(shù)據(jù)恢復(fù)案例

    binlog。 數(shù)據(jù)庫故障&分析: 工作人員在執(zhí)行Delete命令刪除數(shù)據(jù)時(shí)未添加where子句進(jìn)行篩選,導(dǎo)致全表數(shù)據(jù)被刪除,刪除后未對該表進(jìn)行其他操作。 在本案例中,由于
    的頭像 發(fā)表于 11-09 15:16 ?1139次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫</b>表誤刪除記錄的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫介紹和數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫是文檔數(shù)據(jù)存儲,將文檔存儲在集合之中,不是像MySQL一樣的關(guān)系型數(shù)據(jù)庫。
    的頭像 發(fā)表于 11-08 15:04 ?784次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>介紹和<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    什么是數(shù)據(jù)庫?除了MySQL還有哪些數(shù)據(jù)庫?

    對于大多數(shù)項(xiàng)目,用 MySQL 等關(guān)系型數(shù)據(jù)庫來存儲數(shù)據(jù)就足夠了。但關(guān)系型數(shù)據(jù)庫不是銀彈!在某些場景下,比如要存儲的數(shù)據(jù)間沒有關(guān)系時(shí),它并不
    發(fā)表于 10-13 10:20 ?536次閱讀
    什么是<b class='flag-5'>數(shù)據(jù)庫</b>?除了<b class='flag-5'>MySQL</b>還有哪些<b class='flag-5'>數(shù)據(jù)庫</b>?

    如何在Rust中連接和使用MySQL數(shù)據(jù)庫

    MySQL是一個(gè)廣泛使用的關(guān)系型數(shù)據(jù)庫,Rust作為一門相對較新的系統(tǒng)級編程語言,具有C語言般的高性能、安全、并發(fā)等特性,因此與MySQL一起使用是一種非常有趣的選擇。在本教程中,我們將手把手地展示
    的頭像 發(fā)表于 09-30 17:05 ?1418次閱讀