最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

MySQL從庫com_insert無變化的原因_MySQL

來源:懂視網 責編:小采 時間:2020-11-09 19:17:24
文檔

MySQL從庫com_insert無變化的原因_MySQL

MySQL從庫com_insert無變化的原因_MySQL:大家都知道com_insert等com_xxx參數(shù)可以用來監(jiān)控數(shù)據(jù)庫實例的訪問量,也就是我們常說的QPS。并且基于MySQL的復制原理,所有主庫執(zhí)行的操作都會在從庫重放一遍保證數(shù)據(jù)一致,那么主庫的com_insert和從庫的com_insert理論上應該是相等的。如下面顯示,第二列
推薦度:
導讀MySQL從庫com_insert無變化的原因_MySQL:大家都知道com_insert等com_xxx參數(shù)可以用來監(jiān)控數(shù)據(jù)庫實例的訪問量,也就是我們常說的QPS。并且基于MySQL的復制原理,所有主庫執(zhí)行的操作都會在從庫重放一遍保證數(shù)據(jù)一致,那么主庫的com_insert和從庫的com_insert理論上應該是相等的。如下面顯示,第二列

大家都知道com_insert等com_xxx參數(shù)可以用來監(jiān)控數(shù)據(jù)庫實例的訪問量,也就是我們常說的QPS。并且基于MySQL的復制原理,所有主庫執(zhí)行的操作都會在從庫重放一遍保證數(shù)據(jù)一致,那么主庫的com_insert和從庫的com_insert理論上應該是相等的。
如下面顯示,第二列代表主庫,第三列代表從庫:

com_select 22 1138com_update 36 37com_insert 133 135com_delete 0 0qcache_hits 0 0Com_replace 0 0Connections 13 24

但是我們看另外一個業(yè)務:

com_select 0 95com_update 0 0com_insert 92 0com_delete 20 0qcache_hits 0 6Com_replace 0 0Connections 0 6

我們可以很明顯的看出來,主庫有92個寫,但是從庫0個寫,這是為什么呢?

這2個業(yè)務唯一的區(qū)別就是binlog_format的設置不一樣。

第一個業(yè)務
show global variables like '%binlog_format%';+---------------+-----------+| Variable_name | Value |+---------------+-----------+| binlog_format | STATEMENT |+---------------+-----------+
第二個業(yè)務
show global variables like '%binlog_format%';+---------------+-------+| Variable_name | Value |+---------------+-------+| binlog_format | ROW |+---------------+-------+

我們來看下com_xxx的官方文檔定義:

The Com_xxx statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count DELETE and UPDATE statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to DELETE and UPDATE statements that use multiple-table syntax.

從上述文檔,我們只能看到com_xxx是如何運作的,但是并不能解釋為什么使用RBR之后com_insert就不變化了。

接下來我們結合下面這段文檔來一起看看。

You cannot examine the logs to see what statements were executed, nor can you see on the slave what statements were received from the master and executed.However, you can see what data was changed using mysqlbinlog with the options --base64-output=DECODE-ROWS and --verbose.

這2段話結合來看,原因應該是這樣的:

1、主庫上接收的是statement的語句,所以com_insert符合觸發(fā)條件,會隨著業(yè)務增加。

2、而從庫是拿到主庫的binlog后重放更新數(shù)據(jù),但是主庫的日志格式是row format,這就導致了binlog中記錄的不是statement語句,而是data的變化記錄。

3、這樣從庫雖然依然能進行更新記錄,但是無法解析出來這些data變化是一條statement語句導致的還是多條statment語句導致,所以就不在更新com_insert這個statment counter了。

基本上推論符合現(xiàn)實情況,但是沒有code證明,比較遺憾。

另外,如果我們無法通過com_insert來監(jiān)控從庫的寫入情況,那么我們應該監(jiān)控那個status呢?

個人建議對于row格式的實例,通過監(jiān)控innodb_rows_inserted來監(jiān)控寫入情況。

show global status like 'innodb_rows_inserted';+----------------------+------------+| Variable_name | Value |+----------------------+------------+| Innodb_rows_inserted | 2666049650 |+----------------------+------------+

附:(兩個文檔的官方文檔鏈接)

http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Com_xxx

http://dev.mysql.com/doc/refman/5.5/en/replication-sbr-rbr.html

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

MySQL從庫com_insert無變化的原因_MySQL

MySQL從庫com_insert無變化的原因_MySQL:大家都知道com_insert等com_xxx參數(shù)可以用來監(jiān)控數(shù)據(jù)庫實例的訪問量,也就是我們常說的QPS。并且基于MySQL的復制原理,所有主庫執(zhí)行的操作都會在從庫重放一遍保證數(shù)據(jù)一致,那么主庫的com_insert和從庫的com_insert理論上應該是相等的。如下面顯示,第二列
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top