首頁  >  文章  >  資料庫  >  Mysql主從同步原理實現的詳情介紹(圖文)

Mysql主從同步原理實現的詳情介紹(圖文)

黄舟
黄舟原創
2017-03-14 16:39:061411瀏覽

這篇文章主要介紹了Mysql主從同步的實現原理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

1、什麼是mysql主從同步?

當master(主)函式庫的資料改變的時候,變化會即時的同步到slave(從)庫。

2、主從同步有什麼好處?

  • 水平擴展資料庫的負載能力。

  • 容錯,高可用。 Failover(失敗切換)/High Availability

  • 資料備份。

3、主從同步的原理是什麼?

首先我們來了解master-slave的體系結構。

如下圖:

#不管是delete、update、insert,或是建立函數預存程序,所有的操作都在master上。當master有操作的時候,slave會快速的接收到這些操作,從而做同步。

但是,這個機制是怎麼實現的呢?

在master機器上,主從同步事件會被寫到特殊的log檔案(binary-log);在slave機器上,slave讀取主從同步事件,並根據讀取的事件變化,在slave庫上做相應的更改。

如此,就實現了主從同步了!

下面我們來詳細的了解。

3.1主從同步事件有哪些

上面說到:

在master機器上,主從同步事件會被寫到特殊的log檔案(binary-log);

主從同步事件有3種形式:statement、row、mixed。

  1. statement:會將資料庫運算的sql語句寫入到binlog中。

  2. row:會將每個資料的變化寫入到binlog中。

  3. mixed:statement與row的混合。 Mysql決定什麼時候寫statement格式的,什麼時候寫row格式的binlog。

3.2在master機器上的操作

當master上的資料改變的時候,該事件(insert、update、delete)變化會依照順序寫入到binlog中。

binlog dump執行緒

當slave連線到master的時候,master機器會為slave開啟binlog dump執行緒。當master 的 binlog發生變化的時候,binlog dump執行緒會通知slave,並將對應的binlog內容傳送給slave。

3.3在slave機器上的動作

當主從同步開啟的時候,slave上會建立2個執行緒。

  • I/O執行緒。該執行緒連接到master機器,master機器上的binlog dump執行緒會將binlog的內容傳送給該I/O執行緒。此I/O執行緒接收到binlog內容後,再將內容寫入到本地的relay log。

  • SQL執行緒。該執行緒讀取I/O執行緒寫入的relay log。並且根據relay log的內容對slave資料庫做對應的操作。

3.4如何在master、slave上查看上述的執行緒?

使用SHOW PROCESSLIST指令可以查看。

如圖,在master機器上查看binlog dump執行緒。

如圖,在slave機器上查看I/O、SQL執行緒。

4、講了這麼多,一圖以蔽之

##

以上是Mysql主從同步原理實現的詳情介紹(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn