mysql 5.7 延遲同步_MySQL5.6升級5.7時出現主從延遲問題排查過程

最近在做zabbix的數據庫MySQL5.6升級5.7時,出現主從延遲問題,這個問題困擾了很久沒有解決,昨天終于解決了,整理了一下整個排查過程,分享給大家。

環境說明:

mysql主庫為5.6的版本,有四個從庫,三個為5.6的版本,一個為5.7的版本,所有主從的庫表結構均一致,5.7的從庫出現大量延遲,5.6的沒問題,業務為zabbix監控,基本全部為insert批量插入操作,每條insert SQL插入數據為400-1000行左右。

問題:

MySQL5.7的從庫大量延遲,relaylog落盤正常,應用到數據庫比較慢,磁盤IO和CPU沒有壓力,sync_binlog為20000或是0沒有區別,max_allowed_packet=128M,innodb_flush_log_at_trx_commit=0,bulk_insert_buffer_size = 128M,binlog_format=row,sync_relay_log=10000,沒有使用并行復制,沒有開啟SSL,沒有開啟GDID,沒有開啟半同步。

排查過程:

1:檢查各個核對各個和性能相關的參數,沒有發現異常。

2:檢查網卡、硬盤、更換服務器、數據庫服務器重啟均沒有效果,5.7的延遲依然存在,排除硬件問題。

3:5.7同步主庫5.6的binlog到relaylog很快,正常,但是relaylog在5.7數據庫中回放效率極低。

4:對比5.6和5.7從庫的show engine innodb status結果:

=============5.6===============================

---BUFFER POOL 1

Buffer pool size 655359

Buffer pool size, bytes 10737401856

Free buffers 1019

Database pages 649599

Old database pages 239773

Modified db pages 119309

Pending reads 0

Pending writes: LRU 0, flush list 0, single page 0

Pages made young 10777670, not young 181119246

13.90 youngs/s, 157.51 non-youngs/s

Pages read 8853516, created 135760152, written 784514803

20.96 reads/s, 58.17 creates/s, 507.02 writes/s

Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 2 / 1000

Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s

LRU len: 649599, unzip_LRU len: 0

I/O sum[209618]:cur[2], unzip sum[0]:cur[0]

=============5.7==============================

---BUFFER POOL 1

Buffer pool size 819100

Buffer pool size, bytes 13420134400

Free buffers 1018

Database pages 722328

Old database pages 266620

Modified db pages 99073

Pending reads 0

Pending writes: LRU 0, flush list 0, single page 0

Pages made young 37153, not young 795

0.00 youngs/s, 0.00 non-youngs/s

Pages read 149632, created 572696, written 2706369

0.00 reads/s, 0.00 creates/s, 0.00 writes/s

Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000

Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s

LRU len: 722328, unzip_LRU len: 453903

I/O sum[98685]:cur[0], unzip sum[882]:cur[6]

+++++++++++++++++++++++

對比發現5.7中unzip存在數值,5.6的沒有,初步懷疑造成延遲的原因和壓縮解壓相關。

5:使用perf top -p pidof mysqld查看5.7從庫

發現libz.so.1.2.7 [.] crc32的占比要高于mysqld,在6%左右,這個庫和壓縮解壓相關。

6:修改innodb_compression_level的等級為0(就是不啟用壓縮,默認為6,范圍為0-9),觀察無效果,延遲依然存在。只是

libz的占比下去了,但libc-2.17.so的占比上去了,比mysqld高,在9%左右。使用pstack查看存在研所解壓的等待的問題。

7:檢查zabbix的歷史表,當時為了節約磁盤空間,對這些表做了壓縮處理:

CREATE TABLE trends (

itemid bigint(20) unsigned NOT NULL,

clock int(11) NOT NULL DEFAULT '0',

num int(11) NOT NULL DEFAULT '0',

value_min double(16,4) NOT NULL DEFAULT '0.0000',

value_avg double(16,4) NOT NULL DEFAULT '0.0000',

value_max double(16,4) NOT NULL DEFAULT '0.0000',

PRIMARY KEY (itemid,clock),

KEY clock (clock)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8

懷疑和ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8這個壓縮參數相關。

8:重建所有歷史表,去掉ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8,,重新同步,延遲逐步降低,恢復。

疑問:為什么相同的表結構,在5.7中會造成主從延遲而5.6沒有?可能是壓縮和解壓在MySQL5.7中向下兼容性問題造成的,沒有深究,但給官方提了一個BUG,讓官方走源碼層面去看看:http://bugs.mysql.com/100702。

在生產中請慎用ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8。和業內幾位專家交流,表示MySQL8.0之前的版本壓縮不太靠譜,8.0的用ZSTD還好一點。

到此這篇關于MySQL5.6升級5.7時出現主從延遲問題排查過程的文章就介紹到這了,更多相關MySQL5.6升級5.7主從延遲內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!

本文標題: MySQL5.6升級5.7時出現主從延遲問題排查過程

本文地址: http://www.cppcns.com/shujuku/mysql/342435.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454919.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454919.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454919.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

架構設計--僅是軟件開發之第二大影響力?!

SDWest2006(譯注1)對我來說是個有趣的大會。我除了星期三之外(當時我正飛往費城參加一個客戶會議 因此錯過了Jolt頒獎部分)每天都在演講。我也參加了一些談話和會議;其中最引人關注的是Mike Cohn的計劃與估算的談話。…

WiFi密碼分享有妙招 不必口頭相傳

移動互聯網的迅速崛起,使得我們可以方便的使用手持移動設備進行上網。尤其是在家庭中,使用智能手機、平板電腦、筆記本電腦等移動設備進行上網和娛樂已經成為主流,臺式機上網正日漸式微。在家中時,我們通過無線路由器提供的WiFi網…

javaweb(二十一)——JavaWeb的兩種開發模式

一、JSPJavaBean開發模式 1.1、jspjavabean開發模式架構 jspjavabean開發模式的架構圖如下圖(圖1-1)所示 圖1-1 在jspjavabean架構中,JSP負責控制邏輯、表現邏輯、業務對象(javabean)的調用。 JSPJavaBean模式適合開發業務邏輯不太復雜的web應…

Redis基于客戶端分片的集群案例(待實踐)

說明: 下面的示例基本都是基于Linux去實現,目的是為了環境的統一,以便于把性能調整到最優。且基于Java。建議生產環境不要使用Windows/Mac OS這些。 在Java領域,基于客戶端進行分片最常用的庫應該是Jedis,下面基本是基…

mysql select 效能_MYSQL的聯合查詢最好是少用,效能差異巨大

同樣的功能,不同的寫法,時間和內存占用差了幾千倍,不廢話,直接上代碼第一種寫法:代碼如下:$RsDB::get($_ENV[DB],3,"SELECT * FROM _xiazhu WHERE uid IN(SELECT id FROM _user WHERE id<5000)");var_dump($Rs);內存和時間:內存使用:96514.53Kb 運行時間:1272.73m…

高效程序員應該養成的七個習慣

對于軟件工程師來說&#xff0c;工作也許意味著許多東西 -- 穩定的收入、做自己感興趣的項目、找一份更好工作的跳板&#xff0c;或者你只是喜歡與其他程序員共事。但說到“效率”&#xff0c;強調的是在一定時間內按質完成項目的能力。Phil Chu根據自己的經驗提出了高效程序員…

概率論與數理統計思維導圖知識框架_考研概率論與數理統計 綜合題型秘籍思維導圖① 隨機變量1~3章 [21考研上岸之旅]...

Hello World&#xff0c;我的朋友&#xff0c;這里是一顆小白蛋&#xff0c;大千世界&#xff0c;很高興以這樣的方式與你相遇前言在復習過程中發現概率論知識點很少且集中 所以沒有分開章節去整理王安式概率論輔導講義張宇概率論9講方浩強化班1800題 綜合題型秘籍在學習過程中…

關于軟件的架構設計

好的開始相當于成功一半 開始之初的架構設計決定著軟件產品的生死存亡。“好的開始相當于成功一半”。 開始的架構設計也是最難的&#xff0c;需要調研同類產品的情況以及技術特征&#xff0c;了解當前世界上對這種產品所能提供的理論支持和技術平臺支持。再結合自己項目的特…

[Oracle]快速構造大量數據的方法

[Oracle]快速構造大量數據的方法&#xff1a;create table tab001(id integer primary key, val varchar2(100));insert into tab001 select ij,rpad(to_char(ij),100,A) from ( with DATA2(j) as ( select 0 j from DUAL …

mysql用supervisor管理_Supervisor使用詳解

一、supervisor簡介Supervisor是用Python開發的一套通用的進程管理程序&#xff0c;能將一個普通的命令行進程變為后臺daemon&#xff0c;并監控進程狀態&#xff0c;異常退出時能自動重啟。它是通過fork/exec的方式把這些被管理的進程當作supervisor的子進程來啟動&#xff0c…

Handle/Body pattern(Wrapper pattern)

Handle Body Pattern 一些設計模式&#xff0c;通過一系列非直接的間接的方式&#xff08;這種間接的方式&#xff0c;可稱其為 handle&#xff08;把手&#xff09;&#xff09;&#xff0c;完成接口與實現&#xff08;實現可稱為 body&#xff08;主體&#xff09;&#xff0…

架構設計貴在務實

(本文是我給溫昱先生新書寫的讀后感節選。&#xff09; 我最早聽說“軟件架構”這個概念以及UML的名字&#xff0c;是在1999年的水木清華BBS上。當時有一篇文章介紹了軟件架構作為一個相對獨立的領域的發展情況&#xff0c;順便提到在此前一年被接納為OMG標準的UML。該文作者…

php mysql刪除失敗_php+MySQL實戰案例【七】數據編輯、刪除

?本節內容中講解用戶管理模塊中的修改用戶信息和刪除用戶。修改用戶信息&#xff1a;可對選擇的用戶記錄進行編輯&#xff0c;可修改用戶名、密碼、性別、手機、郵箱和地址信息。刪除用戶信息&#xff1a;將列表中指定的用戶進行刪除操作。二、編輯用戶信息編輯用戶信息&#…

前端每周清單第 34 期:Vue 現狀盤點與 3.0 展望,React 代碼遷移與優化,圖片優化詳論...

作者&#xff1a;王下邀月熊 編輯&#xff1a;徐川 前端每周清單專注前端領域內容&#xff0c;以對外文資料的搜集為主&#xff0c;幫助開發者了解一周前端熱點&#xff1b;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公…

1.three.js世界的4大要素

一、三大組件 在Three.js中&#xff0c;要渲染物體到網頁中&#xff0c;我們需要3個組建&#xff1a;場景&#xff08;scene&#xff09;、相機&#xff08;camera&#xff09;和渲染器&#xff08;renderer&#xff09;。有了這三樣東西&#xff0c;才能將物體渲染到網頁中去。…

架構設計 例子和實踐

系統設計說明書(架構、概要、詳細)目錄結構 雖然這些文檔一般來說公司都是有模板的&#xff0c;但我寫這些文檔以來基本上是每寫一次就把目錄結構給改一次&#xff0c;應該說這是因為自己對這些文檔的理解開始加深&#xff0c;慢慢的越來越明白這些文檔的作用和其中需要闡述的東…

activiti 批量 mysql_Activiti6系列(3)- 快速體驗

一、部署啟動activiti####1、部署&#xff0c;將兩個war包拷貝到Tomcat下即可。![](https://img2018.cnblogs.com/blog/1755845/201908/1755845-20190802010532367-2002399291.png)2、啟動tomcat&#xff0c;訪問http://127.0.0.1:8080/activiti-app默認賬號密碼&#xff1a;ad…

【啟動】Windows上啟動圖形化軟件,報錯: 無法啟動此程序,因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll...

今天在安裝了jetbrains官網上的ToolBox軟件后&#xff0c;沒有辦法啟動起來&#xff0c;報錯如下&#xff1a; 無法啟動此程序&#xff0c;因為計算機中丟失api-ms-win-crt-runtime-1-1-0.dll 嘗試重新安裝了并沒有什么用&#xff0c;現在來解決方法&#xff1a; 直接找到官方的…

論文: YOLO9000-Better,Faster,Stronger

論文閱讀&#xff1a; YOLO9000-Better,Faster,Stronger YOLOv2 是經過改造之后的YOLO Batch Normalization&#xff1a;在所有的conv layer后加了BN之后提高了2% mAP&#xff0c;BN可以幫助regularize模型&#xff0c;這樣的話就可以放棄 dropout。 High Resolution Classifi…

怎么ie取消要打開或保存來自_取消認證后,發票抵扣就這么簡單!

點擊標題下「中財訊集團」可快速關注3月1日起&#xff0c;取消增值稅發票認證的納稅人范圍擴大至全部一般納稅人。一般納稅人可以自愿使用增值稅發票選擇確認平臺查詢、選擇用于申報抵扣、出口退稅或者代辦退稅的增值稅發票信息。具體如何操作呢&#xff1f;掌握以下步驟&#…