1. 程式人生 > >mysql主從延遲原因以及解決方案

mysql主從延遲原因以及解決方案

  1. MySQL資料庫主從同步延遲原理。
  2. MySQL資料庫主從同步延遲是怎麼產生的。
  3. MySQL資料庫主從同步延遲解決方案。
  4. MySQL資料庫主從同步延遲產生的因素。

1.MySQL資料庫主從同步延遲原理。

答:談到MySQL資料庫主從同步延遲原理,得從mysql的資料庫主從複製原理說起,mysql的主從複製都是單執行緒的操作,主庫對所有DDL和DML產生binlog,binlog是順序寫,所以效率很高;slave的Slave_IO_Running執行緒會到主庫取日誌,效率會比較高,slave的Slave_SQL_Running執行緒將主庫的DDL和DML操作都在slave實施。DML和DDL的IO操作是隨機的,不是順序的,因此成本會很高,還可能是slave上的其他查詢產生lock爭用,由於Slave_SQL_Running也是單執行緒的,所以一個DDL卡主了,需要執行10分鐘,那麼所有之後的DDL會等待這個DDL執行完才會繼續執行,這就導致了延時。有朋友會問:“主庫上那個相同的DDL也需要執行10分,為什麼slave會延時?”,答案是master可以併發,Slave_SQL_Running執行緒卻不可以。

2.MySQL資料庫主從同步延遲是怎麼產生的。

答:當主庫的TPS併發較高時,產生的DDL數量超過slave一個sql執行緒所能承受的範圍,那麼延時就產生了,當然還有就是可能與slave的大型query語句產生了鎖等待。

3.MySQL資料庫主從同步延遲解決方案

答:最簡單的減少slave同步延時的方案就是在架構上做優化,儘量讓主庫的DDL快速執行。還有就是主庫是寫,對資料安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設定,而slave則不需要這麼高的資料安全,完全可以講sync_binlog設定為0或者關閉binlog,innodb_flushlog也可以設定為0來提高sql的執行效率。另外就是使用比主庫更好的硬體裝置作為slave。

4.MySQL資料庫主從同步延遲產生的因素。
1. 網路延遲
2. master負載
3. slave負載
一般的做法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的伺服器,只作為備份用,不進行其他任何操作,就能相對最大限度地達到’實時’的要求了

另外,再介紹2個可以減少延遲的引數
–slave-net-timeout=seconds
引數含義:當slave從主資料庫讀取log資料失敗後,等待多久重新建立連線並獲取資料
slave_net_timeout單位為秒 預設設定為 3600秒
| slave_net_timeout | 3600
–master-connect-retry=seconds
引數含義:當重新建立主從連線時,如果連線建立失敗,間隔多久後重試。
master-connect-retry單位為秒 預設設定為 60秒
通常配置以上2個引數可以減少網路問題導致的主從資料同步延遲

相關推薦

mysql主從延遲原因以及解決方案

MySQL資料庫主從同步延遲原理。 MySQL資料庫主從同步延遲是怎麼產生的。 MySQL資料庫主從同步延遲解決方案。 MySQL資料庫主從同步延遲產生的因素。 1.MySQL資料庫主從同步延遲原理。 答:談到MySQL資料庫主從同步延遲原理,得從mys

mysql 在修改新增欄位(alter table 表名 add column 或者 modify column)且帶unique時提示duplicate entry for key的原因以及解決方案

今天在公司臨時維護一張表時,我作了一個小動作,新增一個欄位,並且設定為unique時,盡然無法新增欄位,我當時就納悶了,寫了這麼多sql,這麼奇怪的問題還是第一次見,不多說,直接看圖 【我的sql檔案如下】 【執行sql語句報錯:alter table smart_

設計方案--移動端延遲300ms的原因以及解決方案

一、前言 移動端瀏覽器提供一個特殊的功能:雙擊(double tap)縮放。   二、移動端延遲300ms的原因 為什麼要用觸控事件?觸控事件是移動端瀏覽器特有的html5事件。 因為移動端的click有很大延遲(大約300ms),300ms延遲來自判斷雙擊和長按,因為只有預設等待時間結束

內存溢出和內存泄漏的區別、產生原因以及解決方案

服務 har 操作 ger 遞歸調用 問題 let share 查錯 內存溢出 out of memory,是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。 內

內存溢出和內存泄漏的區別,產生原因以及解決方案

解決方案 集合類 釋放內存 分頁 需求 查看內存 取出 程序 tof 一、概念與區別 內存溢出 out of memory,是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請 了一個integer,但給它存了long才能存下的數,那就

U-Mail郵件系統詳解郵件收發延遲原因解決方案

郵件系統 郵件是現代社會辦公最常見、最頻繁的通聯工具,但使用郵件系統時,用戶普遍最關心兩個安全,一個是安全性,郵件會不會被竊密?自己的郵箱賬號會不會被盜取被攻占呢?保存的數據會不會丟失呢?關於這個問題,國內知名通聯解決方案提供商U-Mail資深專家馬工已反復闡述過很多次。 另一個問題是關於郵件傳輸的,郵

記憶體溢位和記憶體洩漏的區別、產生原因以及解決方案【轉】

(轉自:https://www.cnblogs.com/Sharley/p/5285045.html) 記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就

class not found (php)明明名稱空間和類目都存在卻總是提示找不到的奇葩現象原因以及解決方案

出現class not found 的原因有好幾種,寫法錯誤之類的,這些都是正常現象,自己細心一點就能解決,但是我在這說的主要是大家都容易忽視的情況 【最容易出現class not found 並且檢查半天也找不到原因的情況之一】:使用框架,引入第三方類庫,因為框架規定

分散式事物原因以及解決方案

1、什麼是分散式事務 分散式事務就是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分散式系統的不同節點之上。以上是百度百科的解釋,簡單的說,就是一次大的操作由不同的小操作組成,這些小的操作分佈在不同的伺服器上,且屬於不同的應用,分散式事務需要保證這

PHP設定cookie無效問題原因以及解決方案

在某個頁面中使用setcookie來設定cookie,例如 setcookie("id",$id, time()+36002430); 但是回到首頁之後發現沒有生效,用javascript:alert(document.cookie)裡面為空,PHP裡面的$_COOKIE

rsync同步報錯原因以及解決方案

[[email protected] data]# rsync -avz rsync://[email protected]/www /data rsync: failed to connect to 192.168.17.13: Conne

記憶體溢位和記憶體洩漏的區別、產生原因以及解決方案

記憶體溢位 out of memory,是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是記憶體溢位。 記憶體洩露 memory leak,是指程式在申請記憶體後,無法釋

移動端1px誤差的原因以及解決方案

移動端1px問題在面試和工作中會經常遇到,系統地理解它是一個優秀前端的必修課! 為什麼移動端css裡面寫了1px, 實際看起來比1px粗. 其實原因很好理解:這2個’px’的含義是不一樣的. 移動端html的header總會有一句 <meta na

推廣域名被微信中被攔截、封殺、遮蔽的原因以及解決方案

科普: 域名被微信封殺,顯示的是連結無法訪問; 域名被微信攔截,是跟淘寶一樣-如需瀏覽,請長按網址複製後使用瀏覽器訪問。域名被微信遮蔽,顧名思義,遮蔽,肯定是看不到!!域名被信封,確實很多因素有關,簡單列舉下: 1、微信規定域名要備案,並且要加白名單,新買的域名沒做站就被封,應該是搶的剛被人放棄的域

java多個例項物件執行緒同步無效的原因以及解決方案

【原因】:synchronized用法沒搞清楚 下面就直接舉例子了! 【情況1】:單例項物件多執行緒 public class Demo3 { Tlwindow twd1,twd2,twd3; //定義三個視窗 public static void

php進行遞迴時出現Call to a member function 方法() on null的原因以及解決方案

【原因】:遞迴導致開闢新的棧,在新棧中你的"方法()"這個成員方法是不存在的 【解決方案】:進行遞迴時將"方法()"的所屬類當做引數傳入進去即可解決 【案例如下】:(如果有不清楚的,歡迎給我進行留言),php交流QQ群188386255 ,專業php高階完整視訊免費下載

Xcode Archive打包時不報錯,但是buildFailed原因以及解決方案

本週嘗試著打包ipa檔案居然不成功,一直編譯失敗。但是就是不知道哪裡的原因,問了別人一下之後流程都是對的,但是就是不行。 後來查了好多資料,作出修改: 1.project和targets裡得skip-install 已經設定為NO 工程->build setting,

推廣域名被微信中被攔截、封殺、屏蔽的原因以及解決方案

監測 img 自己 分享 宣傳 下載 原因 就會 並且 域名被微信封殺,顯示的是鏈接無法訪問;域名被微信攔截,是跟淘寶一樣-如需瀏覽,請長按網址復制後使用瀏覽器訪問。域名被微信屏蔽,顧名思義,屏蔽,肯定是看不到!!域名被信封,確實很多因素有關,簡單列舉下:1、微信規定域名要

tomcat中部署專案後,訪問失敗,報錯404的原因以及解決方案

MyEclipse中報的錯誤: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].Sta

jquery append指令碼增加的html onclick時間無法生效的原因以及解決方案

針對click, dblclick, mousedown, mouseup,等一些事件,它們處理的都是對當前匹配的元素的增加一個監聽事件。但我們用append指令碼增加html的時候相當於是未來匹配的