精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何通過 binlog 定位大事務?你學會了嗎?

開發 前端
根據這個特點,只要進入 binlog 的存放目錄,觀察到文件大小異常的 binlog,那么你就可以去解析這個 binlog 獲取大事務了。當然,需要注意的是,這只是一部分,文件大小正常的 binlog 中也藏著大事務。

1序

大事務想必大家都遇到過,既然要對大事務進行拆分,第一步就是要找到它。那么如何通過 binlog 來定位到大事務呢?

首先,可通過 binlog 文件的大小來判斷是否存在大事務,當一個 binlog 文件快被寫完時,突然出現大事務,會突破 max_binlog_size 的大小繼續寫入。

官方文檔[1] 中是這樣描述的:

A transaction is written in one chunk to the binary log, so it is never split between several binary logs. Therefore, if you have big transactions, you might see binary log files larger than max_binlog_size.

根據這個特點,只要進入 binlog 的存放目錄,觀察到文件大小異常的 binlog,那么你就可以去解析這個 binlog 獲取大事務了。當然,需要注意的是,這只是一部分,文件大小正常的 binlog 中也藏著大事務。

2實踐

既然要定位大事務的 SQL,針對已開啟 GTID 的實例,只要定位到對應的 GTID 即可,下面我們開始對一個 binlog 進行解析:

環境

測試環境

binlog 格式

row

binlog 版本

v4

GTID

已開啟

已驗證的 MySQL 版本

MySQL 5.7.30、MySQL 8.0.28

首先,我們解析出一個 binlog 中按照事務大小排名前 N 的事務。

# 為了方便保存為腳本,這里定義幾個基本的變量
BINLOG_FILE_NAME=$1                       # binlog文件名
TRANS_NUM=$2                              # 想要獲取的事務數量
MYSQL_BIN_DIR='/data/mysql/3306/base/bin' # basedir

# 獲取前TRANS_NUM個大事務
${MYSQL_BIN_DIR}/mysqlbinlog ${BINLOG_FILE_NAME} | 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);tmp=$1}' | sort -n -r -k 1 | head -n ${TRANS_NUM} > binlog_init.tmp

經過第一步對 binlog 的基本解析后,我們已經拿到了對應事務的大小和可供定位 GTID 的 POS 信息,接下來對上述輸出的臨時文件進行逐行解析,針對每一個事務獲取到相應的信息。

while read line
do
    # 事務大小這里取近似值,因為不是通過(TRANS_END_POS-TRANS_START_POS)計算出的
    TRANS_SIZE=$(echo ${line} | awk '{print $1}')
    logWriteWarning "TRANS_SIZE: $(echo | awk -v TRANS_SIZE=${TRANS_SIZE} '{ print (TRANS_SIZE/1024/1024) }')MB"
    FLAG_POS=$(echo ${line} | awk '{print $2}')
    # 獲取GTID
    ${MYSQL_BIN_DIR}/mysqlbinlog -vvv --base64-output=decode-rows ${BINLOG_FILE_NAME} | grep -m 1 -A3 -Ei "^# at ${FLAG_POS}" > binlog_parse.tmp
    GTID=$(cat binlog_parse.tmp | grep -i 'SESSION.GTID_NEXT' | awk -F "'" '{print $2}')
    # 通過GTID解析出事務的詳細信息
    ${MYSQL_BIN_DIR}/mysqlbinlog --base64-output=decode-rows -vvv --include-gtids="${GTID}" ${BINLOG_FILE_NAME} > binlog_gtid.tmp
    START_TIME=$(grep -Ei '^BEGIN' -m 1 -A 3 binlog_gtid.tmp | grep -i 'server id' | awk '{print $1,$2}' | sed 's/#//g')
    END_TIME=$(grep -Ei '^COMMIT' -m 1 -B 1 binlog_gtid.tmp | head -1 | awk '{print $1,$2}' | sed 's/#//g')
    TRANS_START_POS=$(grep -Ei 'SESSION.GTID_NEXT' -m 1 -A 1 binlog_gtid.tmp | tail -1 | awk '{print $3}')
    TRANS_END_POS=$(grep -Ei '^COMMIT' -m 1 -B 1 binlog_gtid.tmp | head -1 | awk '{print $7}')
    # 輸出
    logWrite "GTID: ${GTID}"
    logWrite "START_TIME: $(date -d "${START_TIME}" '+%F %T')"
    logWrite "END_TIME: $(date -d "${END_TIME}" '+%F %T')"
    logWrite "TRANS_START_POS: ${TRANS_START_POS}"
    logWrite "TRANS_END_POS: ${TRANS_END_POS}"
    # 統計對應的DML語句數量
    logWrite "該事務的DML語句及相關表統計:"
    grep -Ei '^### insert' binlog_gtid.tmp | sort | uniq -c
    grep -Ei '^### delete' binlog_gtid.tmp | sort | uniq -c
    grep -Ei '^### update' binlog_gtid.tmp | sort | uniq -c

done < binlog_init.tmp

至此,我們已經基本實現了通過解析一個 binlog 文件,從而拿到對應的 GTID、事務開始和結束時間、事務開始和結束的 POS、對應的 DML 語句數量統計。為了不重復執行解析命令,我們可以將其封裝為腳本,作為日常運維工具使用。

最終效果展示

[root@localhost ~]$ sh parse_binlog.sh /opt/sandboxes/rsandbox_5_7_35/master/data/mysql-bin.000003 2
2023-12-12 15:15:40 [WARNING] 開始解析BINLOG: /opt/sandboxes/rsandbox_5_7_35/master/data/mysql-bin.000003 
2023-12-12 15:15:53 [WARNING] TRANS_SIZE: 0.00161743MB 
2023-12-12 15:16:06 [INFO] GTID: 00020236-1111-1111-1111-111111111111:362779 
2023-12-12 15:16:06 [INFO] START_TIME: 2023-12-12 15:14:35 
2023-12-12 15:16:06 [INFO] END_TIME: 2023-12-12 15:14:35 
2023-12-12 15:16:06 [INFO] TRANS_START_POS: 362096066 
2023-12-12 15:16:06 [INFO] TRANS_END_POS: 362097697 
2023-12-12 15:16:06 [INFO] 該事務的DML語句及相關表統計: 
      1 ### INSERT INTO `sbtest`.`sbtest100`
      1 ### DELETE FROM `sbtest`.`sbtest100`
      2 ### UPDATE `sbtest`.`sbtest100`
2023-12-12 15:16:06 [WARNING] TRANS_SIZE: 0.00161648MB 
2023-12-12 15:16:25 [INFO] GTID: 00020236-1111-1111-1111-111111111111:505503 
2023-12-12 15:16:25 [INFO] START_TIME: 2023-12-12 15:15:36 
2023-12-12 15:16:25 [INFO] END_TIME: 2023-12-12 15:15:36 
2023-12-12 15:16:25 [INFO] TRANS_START_POS: 603539112 
2023-12-12 15:16:25 [INFO] TRANS_END_POS: 603540742 
2023-12-12 15:16:25 [INFO] 該事務的DML語句及相關表統計: 
      1 ### INSERT INTO `sbtest`.`sbtest100`
      1 ### DELETE FROM `sbtest`.`sbtest100`
      1 ### UPDATE `sbtest`.`sbtest100`
      1 ### UPDATE `sbtest`.`sbtest87`

通過上述結果可以看到,這種解析方式是基于事務的大小進行排序的,有時我們還可能需要從時間維度進行排序,通過大致相同的思路寫腳本也可以實現,這里提供一個開源的工具 my2sql[2]。

my2sql 可指定 rows 和 time 進行過濾,在 mode 為 file 且 work-type 為 stats 時,連接任意一個 MySQL 實例(無需原庫)均可對 binlog 中的事務進行解析。

# 統計指定 binlog 中各個表的 DML 操作數量(不加 row 和 time 限制)
[root@localhost ~]$ mkdir tmpdir
[root@localhost ~]$ ./my2sql -user root -password xxx -host 127.0.0.1 -port 3306 -mode file -local-binlog-file ./mysql-bin.005375 -work-type stats -start-file mysql-bin.005375 -output-dir ./tmpdir

# 按照事務的行數倒序排序
[root@localhost ~]$ less tmpdir/biglong_trx.txt | sort -nr -k 6 | less

# 按照事務的執行時間倒序排序
[root@localhost ~]$ less tmpdir/biglong_trx.txt | sort -nr -k 7 | less

# 輸出示例(binlog starttime stoptime startpos stoppos rows duration tables)
mysql-bin.005375 2023-12-12_16:04:06 2023-12-12_16:16:59 493014756 582840954 123336 53 [test.t1(inserts=61668, updates=0, deletes=0) test.t2(inserts=61668, updates=0, deletes=0)]

參考資料

[1]sysvar_max_binlog_size: https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html#sysvar_max_binlog_size

[2]my2sql: https://github.com/liuhr/my2sql

作者:李彬,愛可生 DBA 團隊成員,負責項目日常問題處理及公司平臺問題排查。愛好有億點點多,吉他、旅行、打游戲…

責任編輯:武曉燕 來源: 愛可生開源社區
相關推薦

2023-03-07 07:50:15

Transactio事務代碼

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2022-11-30 09:54:57

網絡令牌身份驗證

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-05 07:46:15

JS克隆對象JSON

2022-11-23 14:57:04

2022-08-29 08:05:44

Go類型JSON

2023-03-17 16:44:44

Channel進程模型

2023-01-28 10:40:56

Java虛擬機代碼

2024-11-29 08:53:46

2024-12-04 08:58:46

2023-01-30 09:01:54

圖表指南圖形化

2022-07-08 09:27:48

CSSIFC模型

2024-08-06 09:47:57

2023-10-10 11:04:11

Rust難點內存

2024-07-31 08:39:45

Git命令暫存區
點贊
收藏

51CTO技術棧公眾號

亚洲精品一区二区三区在线播放| 国产深夜男女无套内射| 国产绿帽一区二区三区| 亚洲视频狠狠| 亚洲视频在线免费看| 爽爽爽在线观看| 岛国av在线播放| 国产色综合一区| 91文字幕巨乱亚洲香蕉| 天天干天天操天天操| 一区二区不卡| 国产香蕉精品视频一区二区三区| 中文字幕国产高清| 涩涩在线视频| 亚洲欧美另类在线| 欧美日韩另类综合| 午夜精品久久久久久久99热黄桃| 亚洲一区二区网站| 欧美高清性猛交| 免费黄色片网站| 国产成人精品亚洲线观看| 在线观看日韩毛片| 性欧美大战久久久久久久| 欧洲不卡av| 国产午夜精品福利| 精品国产一区二区三区久久久久久 | 精品一区91| 色88888久久久久久影院野外| 国产精品av免费观看| 国产系列在线观看| 99热这里都是精品| 91免费在线视频| 日韩国产亚洲欧美| 亚洲在线免费| 97视频在线观看免费高清完整版在线观看 | 少妇高潮喷水在线观看| 久cao在线| 中文字幕高清一区| 久久精品magnetxturnbtih| 精品国产18久久久久久| 久久精品国产亚洲高清剧情介绍| 欧洲一区二区视频| 日韩免费av片| 影音先锋亚洲电影| 欧美激情视频一区| 九九在线观看视频| 欧美激情91| 欧美成人一二三| 亚洲综合久久av一区二区三区| 国产一区三区在线播放| 亚洲精品自在久久| 中文字幕影片免费在线观看| 成人中文字幕视频| 欧美成人精品高清在线播放| 中文字幕一区二区在线观看视频| 日日夜夜精品| 3751色影院一区二区三区| 三级a三级三级三级a十八发禁止| 国产韩日精品| 欧美日韩和欧美的一区二区| www.夜夜爽| 亚洲午夜剧场| 日韩视频一区二区三区| 古装做爰无遮挡三级聊斋艳谭| 国产精品白丝久久av网站| 在线不卡欧美精品一区二区三区| 午夜久久福利视频| 日韩精品成人| 亚洲国产精彩中文乱码av在线播放| 久久无码专区国产精品s| 国产96在线亚洲| 精品偷拍各种wc美女嘘嘘| 国产精品三级在线观看无码| 国产亚洲电影| 俺去了亚洲欧美日韩| 美国美女黄色片| 亚洲国产老妈| 性金发美女69hd大尺寸| 中文字幕激情小说| 日本sm残虐另类| 亚洲r级在线观看| 亚洲av无码乱码国产精品| 不卡视频在线观看| 日本在线观看一区二区| 欧美69xxxx| 亚欧色一区w666天堂| 国产精品宾馆在线精品酒店| 成人亚洲视频| 精品国产一区二区三区四区四| 国产精品揄拍100视频| 久久国产成人午夜av影院宅| 九九热视频这里只有精品| 久久久久久久久久影院| 男男视频亚洲欧美| 国产欧美日韩伦理| av网在线观看| 亚洲成人精品影院| 日本肉体xxxx裸体xxx免费| 亚洲日本视频在线| 夜夜嗨av一区二区三区四区| 校园春色 亚洲| 久久av一区二区三区| 91亚洲人电影| 神马亚洲视频| 亚洲最新视频在线观看| 亚洲少妇第一页| 国内精品偷拍| 精品国产拍在线观看| 日韩精品1区2区| 国产福利精品导航| 四虎影院一区二区三区 | 四虎永久在线精品免费网址| 国产精品三级av| 欧美精品自拍视频| 国产精品久久免费视频| 亚洲女同精品视频| 麻豆亚洲av熟女国产一区二 | 精华区一区二区三区| 有码一区二区三区| 欧美午夜aaaaaa免费视频| 欧美人与动xxxxz0oz| 美女少妇精品视频| 中文字幕91爱爱| 久久久综合视频| 999在线观看视频| 美女日韩一区| xxx成人少妇69| 免费看一级视频| www.日韩在线| 人人妻人人澡人人爽欧美一区| 欧美爱爱视频| 在线精品国产成人综合| 中文字字幕在线中文| 91亚洲精品久久久蜜桃| 亚洲乱码日产精品bd在线观看| 国产亚洲精彩久久| 一本色道久久88亚洲综合88| av大片在线免费观看| 成人高清视频在线观看| 91网站在线观看免费| 日韩一区中文| 日韩在线观看免费高清完整版| 波多野结衣视频在线观看| 99国产精品久久久| 欧美成人三级在线视频| 精品久久对白| 91精品国产91久久久久久久久 | 亚洲天天在线日亚洲洲精| 久久一区二区三区视频| 91美女精品福利| 日av中文字幕| 国产在视频线精品视频www666| 日本免费久久高清视频| 青春草在线观看| 色婷婷综合久色| 精品欧美一区二区久久久| 丝袜美腿亚洲色图| 日韩精品伦理第一区| 欧美色999| 中文字幕精品久久| 91麻豆成人精品国产| 专区另类欧美日韩| 性感美女一区二区三区| 亚洲三级色网| 欧美日韩精品综合| 日韩城人网站| 欧美日韩国产二区| 天堂网在线观看视频| 狠狠躁夜夜躁人人躁婷婷91| 在线观看国产精品一区| 久久超级碰视频| 超级碰在线观看| 极品尤物一区| 国产精品成人国产乱一区| 秋霞成人影院| 亚洲成人免费网站| 无码视频在线观看| 中文字幕日韩精品一区| 特种兵之深入敌后| 免费日韩av片| 制服诱惑一区| 国产一区二区三区不卡av| 欧美在线观看一区二区三区| 9191在线观看| 亚洲精品在线免费播放| 日韩熟女一区二区| 亚洲精选一二三| 亚洲av片不卡无码久久| 麻豆中文一区二区| 免费看欧美黑人毛片| 曰本一区二区三区视频| 成人免费视频网址| 性孕妇free特大另类| 日韩一区二区欧美| 日本精品一区二区在线观看| 在线观看成人免费视频| 免费人成在线观看| 欧美激情一区二区三区蜜桃视频| 四虎1515hh.com| 久久看片网站| 日韩精品一区二区三区四| 国产欧美日韩视频在线| 亚洲影视中文字幕| 成人做爰视频www| 欧美激情中文字幕乱码免费| 国产黄色免费在线观看| 亚洲成色999久久网站| 一区二区日韩视频| 岛国精品视频在线播放| 国产第一页浮力| 国产三级精品视频| 色婷婷免费视频| 国产不卡在线一区| 中文字幕第88页| 欧美资源在线| 欧美深夜福利视频| 欧美阿v一级看视频| 色女孩综合网| 欧美精品中文字幕亚洲专区| 亚洲综合精品一区二区| 成人1区2区| 国产91在线播放九色快色| 黄页在线观看免费| 久久成人国产精品| 在线视频自拍| 亚洲网址你懂得| 天堂а√在线8种子蜜桃视频 | av电影在线网| 亚洲日本中文字幕| 色综合888| 亚洲成人精品在线| 黄色美女一级片| 精品国产免费人成电影在线观看四季 | 国产日韩精品视频一区二区三区 | 日韩人妻精品一区二区三区| 精品精品久久| 日韩欧美亚洲精品| 久操国产精品| 欧美日韩精品中文字幕一区二区| 久久久久高潮毛片免费全部播放| av噜噜色噜噜久久| 97久久综合区小说区图片区| 99porn视频在线| 视频精品一区二区三区| 91久久大香伊蕉在人线| 国产精品视频一区二区三区综合 | 黄色a级片免费| 亚洲在线国产日韩欧美| 东京热加勒比无码少妇| 久久精品电影| 日韩视频免费在线播放| 日韩高清不卡一区| 男女视频在线看| 精品夜夜嗨av一区二区三区| 男人操女人下面视频| 国产成人aaa| 潘金莲一级淫片aaaaa| 成人免费精品视频| 强迫凌虐淫辱の牝奴在线观看| proumb性欧美在线观看| 少妇光屁股影院| 中文字幕第一区| 91高清免费观看| 亚洲一二三四在线| 国产中文字幕视频| 欧美日韩精品是欧美日韩精品| 国产精品视频一二区| 日韩你懂的电影在线观看| 日本毛片在线观看| 亚洲天堂av网| 超碰人人在线| 97久久久久久| 高清亚洲高清| 成人av资源| 九一亚洲精品| 国产日产欧美一区二区| 亚洲乱亚洲高清| 国产激情在线观看视频| 国产一区二区三区香蕉| 精品黑人一区二区三区观看时间| 国产清纯在线一区二区www| 91久久国产综合| 香蕉成人伊视频在线观看| 波多野结衣视频在线看| 日韩一卡二卡三卡国产欧美| 天堂a√在线| 日韩视频免费观看| sm久久捆绑调教精品一区| 国产精品视频xxxx| 天堂va在线高清一区| 日韩欧美99| 狠狠久久婷婷| 亚洲第一狼人区| 成人h动漫精品一区二| 亚洲一区视频在线播放| 亚洲影院久久精品| 综合久久中文字幕| 亚洲第一免费网站| 欧美成人三区| 国产成人综合精品| 草莓视频一区二区三区| 性欧美.com| 一区二区久久| 精品人妻一区二区乱码| 国产日韩精品一区二区三区在线| 免费人成视频在线| 欧美日韩不卡一区| 天堂a中文在线| 久久久久久久国产精品视频| 国产资源一区| 欧美精品一区二区三区在线四季| 女人香蕉久久**毛片精品| 91淫黄看大片| 东方欧美亚洲色图在线| 九九这里只有精品视频| 欧美在线观看禁18| 亚洲色欧美另类| 欧美激情国产高清| 一区二区三区| 日韩欧美亚洲精品| 久久精品三级| 日韩aaaaa| 亚洲高清免费在线| 国产成人精品一区二三区四区五区 | 中文字幕在线视频一区二区| 日本一区二区三区在线不卡| 欧美一级视频免费观看| 欧美成人性福生活免费看| 黄视频在线观看网站| 国产精品久久久久久久美男 | 国产亚洲精品激情久久| 日本午夜大片a在线观看| 国产精品制服诱惑| 国产综合精品| 免费在线观看日韩av| 亚洲乱码国产乱码精品精98午夜 | 亚洲福利在线视频| 在线黄色网页| 999国产视频| 欧美日韩专区| zjzjzjzjzj亚洲女人| 亚洲国产色一区| 色呦呦中文字幕| 97在线看福利| 亚洲图区在线| 妞干网在线免费视频| 国产色91在线| 亚洲无码久久久久| 日韩最新中文字幕电影免费看| 456成人影院在线观看| 图片区小说区区亚洲五月| 奇米色777欧美一区二区| 91麻豆制片厂| 884aa四虎影成人精品一区| 成人午夜在线影视| 91在线观看网站| 激情综合激情| 男人的天堂影院| 一本色道久久综合亚洲精品按摩| 国产在线网站| 国产一区二区视频在线观看| 影视一区二区| www.男人天堂| 一本大道久久a久久精二百| 成人不用播放器| 92裸体在线视频网站| 一区在线免费观看| 加勒比一区二区| 欧美四级电影在线观看| 超碰个人在线| 久中文字幕一区| 男女男精品网站| 青青操国产视频| 日韩电影中文字幕一区| 日韩欧美2区| 日韩成人午夜影院| 91污在线观看| 夜夜嗨aⅴ一区二区三区| 欧美高清一级大片| 国产精品一区二区99| 天美一区二区三区| 精品美女久久久久久免费| 精品电影在线| 亚洲综合大片69999| 久久久成人网| 精品国产欧美日韩不卡在线观看| 亚洲国产精品久久91精品| 影音成人av| 久久av综合网| 国产精品欧美综合在线| 黄色aaa毛片| 国产精品日韩一区| 亚洲看片一区| 侵犯稚嫩小箩莉h文系列小说| 日韩av在线播放资源| 日韩欧国产精品一区综合无码| 欧美视频在线观看视频| 国产精品久久看| 肉丝一区二区| 91传媒视频在线观看|