MySQL主從複製做用和原理

1、什麼是主從複製?
主從複製,是用來創建一個和主數據庫徹底同樣的數據庫環境,稱爲從數據庫;主數據庫通常是準實時的業務數據庫。sql


2、主從複製的做用
一、作數據的熱備,做爲後備數據庫,主數據庫服務器故障後,可切換到從數據庫繼續工做,避免數據丟失。
二、架構的擴展。業務量愈來愈大,I/O訪問頻率太高,單機沒法知足,此時作多庫的存儲,下降磁盤I/O訪問的頻率,提升單個機器的I/O性能。
三、讀寫分離,使數據庫能支撐更大的併發。在報表中尤爲重要。因爲部分報表sql語句很是的慢,致使鎖表,影響前臺服務。若是前臺使用master,報表使用slave,那麼報表sql將不會形成前臺鎖,保證了前臺速度。數據庫


3、主從複製的原理
1.數據庫有個bin-log二進制文件,記錄了全部sql語句。
2.咱們的目標就是把主數據庫的bin-log文件的sql語句複製過來。
3.讓其在從數據的relay-log重作日誌文件中再執行一次這些sql語句便可。
4.下面的主從配置就是圍繞這個原理配置
5.具體須要三個線程來操做:
1.binlog輸出線程:每當有從庫鏈接到主庫的時候,主庫都會建立一個線程而後發送binlog內容到從庫。在從庫裏,當複製開始的時候,從庫就會建立兩個線程進行處理:
2.從庫I/O線程:當START SLAVE語句在從庫開始執行以後,從庫建立一個I/O線程,該線程鏈接到主庫並請求主庫發送binlog裏面的更新記錄到從庫上。從庫I/O線程讀取主庫的binlog輸出線程發送的更新並拷貝這些更新到本地文件,其中包括relay log文件。服務器

3.從庫的SQL線程:從庫建立一個SQL線程,這個線程讀取從庫I/O線程寫到relay log的更新事件並執行。架構

能夠知道,對於每個主從複製的鏈接,都有三個線程。擁有多個從庫的主庫爲每個鏈接到主庫的從庫建立一個binlog輸出線程,每個從庫都有它本身的I/O線程和SQL線程。
主從複製如圖:併發

 


原理圖2,幫助理解! 性能

 


步驟一:主庫db的更新事件(update、insert、delete)被寫到binlog
步驟二:從庫發起鏈接,鏈接到主庫
步驟三:此時主庫建立一個binlog dump thread線程,把binlog的內容發送到從庫
步驟四:從庫啓動以後,建立一個I/O線程,讀取主庫傳過來的binlog內容並寫入到relay log.
步驟五:還會建立一個SQL線程,從relay log裏面讀取內容,從Exec_Master_Log_Pos位置開始執行讀取到的更新事件,將更新內容寫入到slave的db.

線程

相關文章
相關標籤/搜索