91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中MHA源碼的示例分析

發布時間:2021-11-02 17:10:09 來源:億速云 閱讀:137 作者:小新 欄目:MySQL數據庫

小編給大家分享一下MySQL中MHA源碼的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

MySQL的高可用方案很多,MHA算是其中最流行的一種方案之一。目前最新的版本是0.57,它分為兩部分,一部分水himanager,另外一部分是node.

了解學習一個開源項目,閱讀源碼是一個很不錯的開始,所以MHA就成為了我學習的一個重點內容。我們先從manager開始,當然因為這個開源項目是基于perl開發,磨刀不誤砍柴工,我們可以在開發IDE里面查看,這樣效率更高一些,比如使用eclipse,下載個插件即可。

整個工程的情況如下,bin目錄下是可執行的perl腳本,引用的包體邏輯在lib下面的.pm文件中。

MySQL中MHA源碼的示例分析

對于node節點來說,也是類似的方式,只是node節點的邏輯內容少了很多,主要集中在對于binlog的處理上。

使用MHA,啟停manager是一個基本的入口,所以我們可以在masterha_manager里查看。會發現腳本其實主要分為兩部分,masterMonitor和MasterFailover。我們就通過main方法來逐步了解。

MySQL中MHA源碼的示例分析

我們切換到MasterMonitor中,查看main方法的內容。

MySQL中MHA源碼的示例分析

如果是在IDE里面就很容易看到對應的.pm文件MasterMonitor.pm的一個結構概覽,從main方法入手。

MySQL中MHA源碼的示例分析

整個Monitor的核心邏輯就是下面的方法了。這個邏輯是一個循環中進行心跳的檢測機制。其中wait_until_master_is_dead就是一個重要方法了。可以順著這個方向繼續往里面看。

MySQL中MHA源碼的示例分析

另外一個重要的腳本就是masterha_master_switch了,主要是完成切換的內容,如果查看腳本的基本結構會發現,通過檢測主節點的狀態,會分別調用MasterFailover和MasterRotate來處理。

MySQL中MHA源碼的示例分析

failover的邏輯如下,我們可以查看對應的pm文件MasterFailover.pm來查看邏輯。整體的邏輯如下圖所示,會分為幾個階段。每個階段會有一個整體的校驗步驟。

MySQL中MHA源碼的示例分析

MySQL中MHA源碼的示例分析

通過上面的部分可以看到,整個切換的過程中,后臺會進行一些列的邏輯檢查,比如查到當前最新的slave節點,如何補齊日志信息(本質上就是通過mysqlbinlog基于時間戳來處理)

在這個基礎上,通過源碼我們可以看到很多不曾注意的細節,比如如果在8個小時內再次切換,是會直接拋錯的。

MySQL中MHA源碼的示例分析

以上是“MySQL中MHA源碼的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平原县| 湾仔区| 德保县| 甘洛县| 武义县| 彭阳县| 铜川市| 鹿邑县| 沅陵县| 济源市| 邢台市| 乌兰浩特市| 武夷山市| 卫辉市| 安远县| 鹤岗市| 密云县| 布尔津县| 江西省| 晋宁县| 乌兰察布市| 陇西县| 仙游县| 子长县| 津南区| 怀远县| 马鞍山市| 纳雍县| 台北市| 寻甸| 宁蒗| 攀枝花市| 凤冈县| 卫辉市| 扬中市| 宝应县| 哈密市| 崇阳县| 连云港市| 宜君县| 九江县|