《MySQL——主備切換流程與主備延遲》

目錄

    • 主備切換
    • 主備延遲的原因
    • 可靠性優先策略的主備切換流程
    • 可用性優先策略的主備切換流程

主備切換

主備切換分為主動運維與被動操作。

軟件升級、主庫所在機器按計劃下線為主動運維。

主庫所在機器掉電為被動操作。

同步延遲

1、主庫A執行完一個事務,寫入binlog,時刻T1

2、傳給備庫B,備庫B接受完這個binlog,時刻T2;

3、備庫B執行完這個事務,時刻T3;

同一個事務,在備庫執行完成的時間和主庫執行完成的時間之差為T3-T1,又稱主備延遲。

在備庫執行show slave status命令會顯示seconds_behind_master,表示備庫延遲了多少秒。

主備庫機器系統時間設置不一樣并不會導致主備延遲的值不準。

在網絡正常的時候,日志從主庫傳給備庫的時間T2-T1是很短的。也就是說網絡正常時,主備延遲的主要來源是備庫接受完binlog和執行這個事務之間的時間差。

主備延遲最直接的表現就是:備庫消費中轉日志(relay log)的速度,比主庫生產binlog的速度慢。

主備延遲的原因

1、備庫所在機器的性能可能比主庫所在的機器性能差

2、備庫壓力大。(主庫提供寫能力,備庫提供讀能力)

由于主庫直接影響業務,使用起來比較克制,反而忽視了備庫的壓力控制。結果就是,備庫上的查詢耗費了大量的CPU資源,影響了同步速度,造成主備延遲。

這種情況可以這么解決:

1、一主多從。除了備庫外,可以多接幾個從庫,讓這些從庫來分擔讀的壓力2、通過binlog輸出到外部系統,讓外部系統提供統計查詢的能力

3、大事務情況

由于主庫必須等事務執行完才會寫入binlog,再傳給備庫。

如果一個主庫上的語句執行10分鐘,那么這個事務很可能會導致從庫延遲10分鐘。

典型大事務場景

a、一次性刪掉大量歷史數據。需要控制每個事務刪除的數據量,分成多次刪除

b、大表DDL

4、備庫并行復制能力差

可靠性優先策略的主備切換流程

在M-M結構下,狀態1切換到狀態2流程如下:

1、判斷備庫B現在的seconds_behind_master,如果小于某個值(比如5s)繼續下一步,否則繼續重試這一步

2、把主庫A改成只讀狀態,(readonly設置為true)

3、判斷備庫B的seconds_behind_master,直到這個值變為0

4、把備庫改成可讀寫狀態,(readonly設置為false)

5、把業務請求切換到備庫B

step2之后,主庫A和備庫B都處于readonly狀態,此時系統處于不可寫狀態,直到step5才能恢復。step3比較耗時。

可用性優先策略的主備切換流程

如果強行把上面的step4、5調整到最開始執行,也就是說不等主備數據同步,直接把連接切到備庫B,并且讓備庫B可以讀寫,那么系統幾乎沒有不可用時間。

這個切換流程,稱為可用性優先流程,不過這個切換的代價,就是可能出現數據不一致的情況。

結論如下:

1、使用row格式的binlog時,數據不一致的問題更容易被發現。使用mixed或者statement格式的binlog時,數據很可能就不一致了。

2、主備切換的可用性優先策略會導致數據不一致,所以一般情況下使用可靠性優先策略。

下面介紹一個使用可用性優先策略的情形:

  • 有一個庫的作用是記錄操作日志。如果數據不一致可以通過binlog來修補,而這個短暫的不一致也不會引發業務問題。

  • 同時,業務系統依賴于這個日志寫入邏輯,如果這個庫不可寫,會導致線上的業務操作無法執行。

如果使用可靠性優先的思路,只能等待備庫慢慢應用中轉日志,在備庫應用完中轉日志且切換成讀寫狀態之前,數據庫是處于不可用的狀態。 這時也不能直接切換到備庫B,然后保持B庫只讀。

所以此時就需要用到可用性優先策略。

Mysql的高可用性,依賴于主備延遲。主備延遲的時間越小,出現故障的時候,服務需要恢復的時間就越短,可用性就越高

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

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

相關文章

ejb模式_EJB的完整形式是什么?

ejb模式EJB:企業Java Bean (EJB: Enterprise Java Bean) EJB is an abbreviation of Enterprise Java Bean. EJB is one of many Java application programming interfaces (API) for flexible and manageable structuring of Java Platform, Enterprise Edition (J…

Android之PreferenceActivity

http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html 看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項目中用到,所以就把自己的使用的在這總結一下,也方便日后查找。 PerferenceActivity是什么,看下…

淺談算法和數據結構: 七 二叉查找樹

前文介紹了符號表的兩種實現,無序鏈表和有序數組,無序鏈表在插入的時候具有較高的靈活性,而有序數組在查找時具有較高的效率,本文介紹的二叉查找樹(Binary Search Tree,BST)這一數據結構綜合了以上兩種數據結構的優點。…

scala部分應用函數_Scala中的部分函數

scala部分應用函數Scala部分功能 (Scala partial functions) A partial function is a function that returns values only for a specific set of values i.e. this function is not able to return values for some input values. This function is defined so that only som…

《MySQL——備庫多線程復制策略。》

目錄備庫并行復制能力MySQL5.6版本 并行復制策略MariaDB 并行復制策略MySQL5.7版本 并行復制策略MySQL5.7.22版本 并行復制策略總結備庫并行復制能力 主要涉及兩個方面的并行度: 1、客戶端寫入主庫的能力 2、備庫上sql_thread執行中轉日志relay log 1的并行能力…

人臉是門大生意

我們正處在一個新時代的入口。人有70%的能量是被大腦消耗,大腦90%的能量用來處理視覺信息,人臉則承載了絕大部分的視覺信息。我們要討論的是一個比Google Glass更酷的世界。文/程苓峰-云科技網易郵箱的用戶已經可以用人臉而不是密碼來驗證登陸。安卓4.0實…

【SQL】sql版Split函數。用于拆分字符串為單列表格

【SQL】sql版Split函數。用于拆分字符串為單列表格 功能與.net版string.Split函數類似,只不過.net返回的是數組,這個返回的是一個單列表格,每個拆分出來的子串占一行。可選是否移除空格子串和重復項。市面上類似的函數不算少,但大…

線描算法

線描算法 (Line drawing algorithms) The equation for a straight line is ymxb 直線方程為y mx b In this m represent a slope of a line which can be calculated by the my2-y1/x2-x1 where (x1, y1) are the starting position of the points and (x2, y2) are the end…

為移動端網頁構造快速響應按鈕

背景 在谷歌,我們不斷地推測手機網頁應用的可能性。像HTML5這樣的技術使我們網頁版的應用以及運行在手機設備上的原生應用。而這些技術的成就之一就是我們開發了一種新的創建按鈕的方法,使按鈕的響應時間遠遠快于一般的HTML按鈕。在此之前的按鈕或者其他…

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 數據庫比較工具 完全破解+使用教程

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 數據庫比較工具 完全破解使用教程 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.4.8.87 Edition 數據庫比較工具 完全破解使用教程 Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 數據庫版本控制…

《MySQL——基于位點orGTID的主備切換協議》

一主多從的設置,用于讀寫分離,主庫負責所有的寫入和一部分讀,其他讀請求則由從庫分擔。 一主多從架構下,主庫故障后的主備切換問題。相比于一主一備,多了從庫指向新主庫的過程。 基于位點的主備切換同步 把節點B設…

數據科學和統計學_數據科學中的統計

數據科學和統計學統計 (Statistics) Statistics are utilized to process complex issues in reality with the goal that Data Scientists and Analysts can search for important patterns and changes in Data. In straightforward words, Statistics can be utilized to ge…

java隨機數生成(固定位數)

隨機生成 a 到 b (不包含b)的整數:(int)(Math.random()*(b-a))a; 隨機生成 a 到 b (包含b)的整數:(int)(Math.random()*(b-a1))a;轉載于:https://www.cnblogs.com/zhwl/p/3624726.html

POJ 3670 Eating Together

POJ_3670 由于遞增和遞減是類似的,下面不妨只討論變成遞增序列的情況。 由于Di只有三個數,所以可以考慮將序列分割成三部分,第一部分全部變成1,第二部分全部變成2,第三部分全部變成3。然后我們枚舉3開始的位置&#xf…

《MySQL——如何解決一主多從的讀寫分離的過期讀問題》

目錄兩種架構兩種架構特點強制走主庫方案Sleep方案判斷主備無延遲方案配合semi-sync等主庫位點方案GTID方案兩種架構 基于一主多從的讀寫分離,如何處理主備延遲導致的讀寫分離問題。 讀寫分離的主要目標:分攤主庫壓力。 有兩種架構: 1、客…

json/ 發送形式_24/7的完整形式是什么?

json/ 發送形式24/7:二十四 (24/7: Twenty-Four Seven) 24/7 or 24-7 service, which generally marked "twenty-four seven" is service that is existing at any time and typically, every day in trade business and industry. Substitute orthograph…

《MySQL tips:并發查詢與并發連接區別》

并發連接與并發查詢,并不是一個概念。 在執行show processlist的結果里,看到了幾千個連接,指的是并發連接。 而"當前正在執行"的語句,才是并發查詢。 并發連接數多影響的是內存。 并發查詢太高對CPU不利。一個機器的…

對上拉下拉電阻的作用作個總結(想了解的過來看看)(轉載)

轉自:http://www.amobbs.com/thread-5475279-1-3.html 一、定義:上拉就是將不確定的信號通過一個電阻嵌位在高電平!電阻同時起限流作用!下拉同理!上拉是對器件注入電流,下拉是輸出電流;弱強只是…

給用戶傳入的變量進行轉義操作

先看代碼實現: /* 對用戶傳入的變量進行轉義操作。*/ if (!get_magic_quotes_gpc()) {if (!empty($_GET)){$_GET addslashes_deep($_GET);}if (!empty($_POST)){$_POST addslashes_deep($_POST);}$_COOKIE addslashes_deep($_COOKIE);$_REQUEST addslashes_…

《MySQL——外部檢測與內部統計 判斷 主庫是否出現問題》

目錄select1判斷查表判斷更新判斷外部檢測弊端內部統計一主一備的雙M架構里,主備切換只需要把客戶端流量切換到備庫。 在一主多從的架構里,主備切換要把客戶端流量切換到備庫,也需要把從庫接到新主庫上。 切換有兩種場景:1、主動…