您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>匯編編程>

mysql數(shù)據(jù)庫同步原理

大?。?/span>0.5 MB 人氣: 2017-09-28 需要積分:1

  MySQL主從復(fù)制原理

  為了減輕主庫的壓力,應(yīng)該在系統(tǒng)應(yīng)用層面做讀寫分離,寫操作走主庫,讀操作走從庫,下圖為MySQL官網(wǎng)給出的主從復(fù)制的原理圖,從圖中可以簡單的了解讀寫分離及主從同步的過程,分散了數(shù)據(jù)庫的訪問壓力,提升整個(gè)系統(tǒng)的性能和可用性,降低了大訪問量引發(fā)數(shù)據(jù)庫宕機(jī)的故障率。

  mysql數(shù)據(jù)庫同步原理

  binlog簡介

  MySQL主從同步是基于binlog文件主從復(fù)制實(shí)現(xiàn),為了更好的理解主從同步過程,這里簡單介紹一下binlog日志文件。

  binlog日志用于記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)(例如,沒有匹配任何行的一個(gè)DELETE)的所有語句。語句以“事件”的形式保存,它描述數(shù)據(jù)更改,它是以二進(jìn)制的形式保存在磁盤中。我們可以通過mysql提供的查看工具mysqlbinlog查看文件中的內(nèi)容,例如 mysqlbinlog mysql-bin.00001 | more,這里注意一下binlog文件的后綴名00001,binlog文件大小和個(gè)數(shù)會(huì)不斷的增加,當(dāng)MySQL停止或重啟時(shí),會(huì)產(chǎn)生一個(gè)新的binlog文件,后綴名會(huì)按序號(hào)遞增,例如mysql-bin.00002、mysql-bin.00003,并且當(dāng)binlog文件大小超過 max_binlog_size系統(tǒng)變量配置時(shí)也會(huì)產(chǎn)生新的binlog文件。

  1. binlog日志格式

 ?。?)statement : 記錄每一條更改數(shù)據(jù)的sql

  優(yōu)點(diǎn):binlog文件較小,節(jié)約I/O,性能較高。

  缺點(diǎn):不是所有的數(shù)據(jù)更改都會(huì)寫入binlog文件中,尤其是使用MySQL中的一些特殊函數(shù)(如LOAD_FILE()、UUID()等)和一些不確定的語句操作,從而導(dǎo)致主從數(shù)據(jù)無法復(fù)制的問題。

 ?。?)row : 不記錄sql,只記錄每行數(shù)據(jù)的更改細(xì)節(jié)

  優(yōu)點(diǎn):詳細(xì)的記錄了每一行數(shù)據(jù)的更改細(xì)節(jié),這也意味著不會(huì)由于使用一些特殊函數(shù)或其他情況導(dǎo)致不能復(fù)制的問題。

  缺點(diǎn):由于row格式記錄了每一行數(shù)據(jù)的更改細(xì)節(jié),會(huì)產(chǎn)生大量的binlog日志內(nèi)容,性能不佳,并且會(huì)增大主從同步延遲出現(xiàn)的幾率。

  (3)mixed:一般的語句修改使用statment格式保存binlog,如一些函數(shù),statement無法完成主從復(fù)制的操作,則采用row格式保存binlog,MySQL會(huì)根據(jù)執(zhí)行的每一條具體的sql語句來區(qū)分對(duì)待記錄的日志形式,也就是在Statement和Row之間選擇一種。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?