久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      mysql主從復(fù)制原理是什么

      mysql主從復(fù)制原理:首先主庫發(fā)送更新事件到從庫;然后從庫讀取更新記錄,并執(zhí)行更新記錄;最后使得從庫的內(nèi)容與主庫保持一致。

      mysql主從復(fù)制原理是什么

      相關(guān)免費學習推薦:mysql視頻教程

      mysql主從復(fù)制原理:

      為什么要做主從復(fù)制

      • 在業(yè)務(wù)復(fù)雜的系統(tǒng)中,有這么一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務(wù),那么就很影響運行中的業(yè)務(wù),使用主從復(fù)制,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現(xiàn)了鎖表的情景,通過讀從庫也可以保證業(yè)務(wù)的正常運行。

      • 做數(shù)據(jù)的熱備,主庫宕機后能夠及時替換主庫,保證業(yè)務(wù)可用性。

      • 架構(gòu)的擴展。業(yè)務(wù)量越來越大,I/O訪問頻率過高,單機無法滿足,此時做多庫的存儲,降低磁盤I/O訪問的頻率,提高單個機器的I/O性能。

      MySQL主從復(fù)制的流程

      mysql主從復(fù)制原理是什么

      主庫db的更新事件(update、insert、delete)被寫到binlog

      主庫創(chuàng)建一個binlog dump thread,把binlog的內(nèi)容發(fā)送到從庫

      從庫啟動并發(fā)起連接,連接到主庫

      從庫啟動之后,創(chuàng)建一個I/O線程,讀取主庫傳過來的binlog內(nèi)容并寫入到relay log

      從庫啟動之后,創(chuàng)建一個SQL線程,從relay log里面讀取內(nèi)容,從Exec_Master_Log_Pos位置開始執(zhí)行讀取到的更新事件,將更新內(nèi)容寫入到slave的db

      注:上述流程為相對流程,并非絕對流程

      MySQL主從復(fù)制的原理

      MySQL主從復(fù)制是一個異步的復(fù)制過程,主庫發(fā)送更新事件到從庫,從庫讀取更新記錄,并執(zhí)行更新記錄,使得從庫的內(nèi)容與主庫保持一致。

      binlog:binary log,主庫中保存所有更新事件日志的二進制文件。binlog是數(shù)據(jù)庫服務(wù)啟動的一刻起,保存數(shù)據(jù)庫所有變更記錄(數(shù)據(jù)庫結(jié)構(gòu)和內(nèi)容)的文件。在主庫中,只要有更新事件出現(xiàn),就會被依次地寫入到binlog中,之后會推送到從庫中作為從庫進行復(fù)制的數(shù)據(jù)源。

      binlog輸出線程:每當有從庫連接到主庫的時候,主庫都會創(chuàng)建一個線程然后發(fā)送binlog內(nèi)容到從庫。 對于每一個即將發(fā)送給從庫的sql事件,binlog輸出線程會將其鎖住。一旦該事件被線程讀取完之后,該鎖會被釋放,即使在該事件完全發(fā)送到從庫的時候,該鎖也會被釋放。

      在從庫中,當復(fù)制開始時,從庫就會創(chuàng)建從庫I/O線程和從庫的SQL線程進行復(fù)制處理。

      從庫I/O線程:當START SLAVE語句在從庫開始執(zhí)行之后,從庫創(chuàng)建一個I/O線程,該線程連接到主庫并請求主庫發(fā)送binlog里面的更新記錄到從庫上。 從庫I/O線程讀取主庫的binlog輸出線程發(fā)送的更新并拷貝這些更新到本地文件,其中包括relay log文件。

      從庫的SQL線程:從庫創(chuàng)建一個SQL線程,這個線程讀取從庫I/O線程寫到relay log的更新事件并執(zhí)行。

      綜上所述,可知:

      對于每一個主從復(fù)制的連接,都有三個線程。擁有多個從庫的主庫為每一個連接到主庫的從庫創(chuàng)建一個binlog輸出線程,每一個從庫都有它自己的I/O線程和SQL線程。

      從庫通過創(chuàng)建兩個獨立的線程,使得在進行復(fù)制時,從庫的讀和寫進行了分離。因此,即使負責執(zhí)行的線程運行較慢,負責讀取更新語句的線程并不會因此變得緩慢。比如說,如果從庫有一段時間沒運行了,當它在此啟動的時候,盡管它的SQL線程執(zhí)行比較慢,它的I/O線程可以快速地從主庫里讀取所有的binlog內(nèi)容。這樣一來,即使從庫在SQL線程執(zhí)行完所有讀取到的語句前停止運行了,I/O線程也至少完全讀取了所有的內(nèi)容,并將其安全地備份在從庫本地的relay log,隨時準備在從庫下一次啟動的時候執(zhí)行語句。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號