第10問:怎麼查看 mysqlbinlog 的解析進度?

第10問:怎麼查看 mysqlbinlog 的解析進度?

問題

mysqlbinlog 是將 binlog 解析成可讀可執行的 SQL 的重要工具。

但解析體積較大的 binlog 時,如何查看 mysqlbinlog 的執行進度就變成了一個問題,mysqlbinlog 並未提供 –progress 這樣的參數。

那要怎麼查看 mysqlbinlog 的解析進度?


實驗

我們在 實驗 08 中介紹瞭如何生成隨機數據。可以利用其中技巧,生成較大的 binlog,我們忽略這個過程。

從已有的 binlog 開始,bin.000002 大約有 1.1 個 G:

第10問:怎麼查看 mysqlbinlog 的解析進度?

用 mysqlbinlog 解析該 binlog:

第10問:怎麼查看 mysqlbinlog 的解析進度?

大概會執行 4.6 秒左右。大家仔細做實驗時,可以將 binlog 放大一些,讓執行實驗更長一些。

我們在 mysqlbinlog 解析時,查看其文件句柄:

第10問:怎麼查看 mysqlbinlog 的解析進度?

可以看到 mysqlbinlog 用句柄 3 讀取 binlog。(我們暫時忽略句柄 4 指向的臨時文件,其涉及到了行格式的解析過程,我們安排在以後的實驗中慢慢介紹)

獲取了 mysqlbinlog 處理文件句柄 3 的進度,就可以大概估算 mysqlbinlog 的整體進度:

第10問:怎麼查看 mysqlbinlog 的解析進度?

可以看到 mysqlbinlog 此時的進度大概是 600M 左右,整體進度估算為 54%。


結論

我們無法讓 mysqlbinlog 直接輸出進度,於是通過觀察 mysqlbinlog 對 binlog 的讀取進度,估算mysqlbinlog 的整體處理進度。


第10問:怎麼查看 mysqlbinlog 的解析進度?

mysqlbinlog 不是真的"流式"處理 binlog,所以本實驗只能是估算,大家在實驗時,會觀察到 mysqlbinlog 讀取了全部 binlog 後,會繼續處理一點時間,才完成所有工作。

我們以後安排實驗來研究 mysqlbinlog 是如何處理 binlog 的。


第10問:怎麼查看 mysqlbinlog 的解析進度?


關於 MySQL 的技術內容,你們還有什麼想知道的嗎?趕緊留言告訴小編吧!

第10問:怎麼查看 mysqlbinlog 的解析進度?


分享到:


相關文章: