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

溫馨提示×

溫馨提示×

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

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

MySQL?Binlog日志與主從復制是什么

發布時間:2022-08-01 11:13:28 來源:億速云 閱讀:97 作者:iii 欄目:開發技術

這篇文章主要介紹了MySQL Binlog日志與主從復制是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL Binlog日志與主從復制是什么文章都會有所收獲,下面我們一起來看看吧。

1. Binlog日志的介紹

Binlog是Binary log的縮寫,即二進制日志。Binlog主要有三個作用:持久化時將隨機IO轉化為順序IO,主從復制以及數據恢復。本文重點主從復制相關的問題。

Binlog日志由一個索引文件與很多日志文件組成,每個日志文件由魔數以及事件組成,每個日志文件都會以一個Rotate類型的事件結束。

MySQL?Binlog日志與主從復制是什么

對于每個事件,都可以分為事件頭與事件體兩部分:

事件頭的結構如下所示:

MySQL?Binlog日志與主從復制是什么

事件體的結構包括固定大小與可變大小兩部分。

對于Binlog日志的格式,做簡單的了解即可,感興趣的同學可以深入學習。

2. 主從復制

2.1 主從復制的流程

MySQL?Binlog日志與主從復制是什么

MySQL主從復制的流程大致如下:

  • 主庫同步自己的Binlog日志給從庫

  • 從庫的IO線程將Binlog日志內容寫入Relay Log

  • 從庫的SQL線程取Relay Log并在數據庫中進行回放

2.2 GTID

GTID是指全局事務標志,用來標記主從同步的情況。

master提交一個事務時會產生GTID,并且記錄在Binlog日志中。從庫的IO線程在讀取Binlog日志時,會將其儲存在自己的Relaylog中,并且將這個值設置到gtid_next中,即下一個要讀取的GTID,從庫讀取這個gtid_next時,會對比自己的Binlog日志中是否有這個GTID:

  • 如果有這個記錄,說明這個GTID的事務已經執行過了,可以忽略掉(冪等)。

  • 如果沒有這個記錄,slave就會執行該GTID事務,并記錄到自己的Binlog日志中。

2.3 復制模型

  • 異步復制:master 把Binlog日志推送給slave,master不需要等到slave是否成功更新數據到Relay log,主庫直接提交事務即可。這種模式犧牲了數據一致性。

  • 同步復制:每次用戶操作時,必須要保證Master和Slave都執行成功才返回給用戶。

  • 半同步復制:不要求Slave執行成功,而是成功接收Master日志就可以通知Master返回。

MySQL?Binlog日志與主從復制是什么

2.4 MGR模式

分布式一致性算法Paxos。由至少3個或更多個節點共同組成一個數據庫集群,事務的提交必須經過半數以上節點同意方可提交提供,支持多寫模式。

MGR 是 share-nothing 的復制方案,基于分布式paxos協議實現,每個實例都有獨立的完整數據副本,集群自動檢查節點信息,做數據的同步。同時提供單主模式和多主模式,單主模式在主庫宕機后能夠自動選主,所有寫入都在主節點進行,多主模式支持多節點寫入。同時集群提供冗余的容錯功能,保證集群大多數節點正常集群就可以正常提供服務。

2.5 并行回放

事務回放是從庫的SQL線程執行Relay Log的過程,并行回放是為了提高這一過程的效率,將可以并行進行的事務同時進行。

  • 基于邏輯時鐘的并行回放

因為MySQL本身事務具有ACID的特點,所以從主庫同步到從庫的事務,只要其執行的邏輯時間上有重疊,那么這兩個事務就能安全的進行并行回放。

  • 基于writeSet的并行回放

使用一個HashMap保存一定時間內針對某一塊數據區域的事務的集合。如果事務在同一組內或者是邏輯時鐘有重疊,說明沒有沖突,其他情況不能確定是否有沖突。

關于“MySQL Binlog日志與主從復制是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL Binlog日志與主從復制是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

朝阳市| 三门县| 汝城县| 鹤壁市| 周口市| 铁力市| 肇庆市| 辽源市| 定结县| 淳化县| 醴陵市| 长治县| 兴安县| 虞城县| 宜君县| 会理县| 宁德市| 襄垣县| 卢氏县| 衡阳县| 融水| 宁夏| 贺兰县| 济南市| 武义县| 义乌市| 建阳市| 胶州市| 蛟河市| 萝北县| 巴彦淖尔市| 泰顺县| 大名县| 镇巴县| 遵义县| 江油市| 永定县| 泽普县| 新建县| 康乐县| 化州市|