mysql數(shù)據(jù)庫同步原理
MySQL主從復(fù)制原理
為了減輕主庫的壓力,應(yīng)該在系統(tǒng)應(yīng)用層面做讀寫分離,寫操作走主庫,讀操作走從庫,下圖為MySQL官網(wǎng)給出的主從復(fù)制的原理圖,從圖中可以簡單的了解讀寫分離及主從同步的過程,分散了數(shù)據(jù)庫的訪問壓力,提升整個系統(tǒng)的性能和可用性,降低了大訪問量引發(fā)數(shù)據(jù)庫宕機的故障率。
binlog簡介
MySQL主從同步是基于binlog文件主從復(fù)制實現(xiàn),為了更好的理解主從同步過程,這里簡單介紹一下binlog日志文件。
binlog日志用于記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數(shù)據(jù)更改,它是以二進制的形式保存在磁盤中。我們可以通過mysql提供的查看工具mysqlbinlog查看文件中的內(nèi)容,例如 mysqlbinlog mysql-bin.00001 | more,這里注意一下binlog文件的后綴名00001,binlog文件大小和個數(shù)會不斷的增加,當(dāng)MySQL停止或重啟時,會產(chǎn)生一個新的binlog文件,后綴名會按序號遞增,例如mysql-bin.00002、mysql-bin.00003,并且當(dāng)binlog文件大小超過 max_binlog_size系統(tǒng)變量配置時也會產(chǎn)生新的binlog文件。
1. binlog日志格式
(1)statement : 記錄每一條更改數(shù)據(jù)的sql
優(yōu)點:binlog文件較小,節(jié)約I/O,性能較高。
缺點:不是所有的數(shù)據(jù)更改都會寫入binlog文件中,尤其是使用MySQL中的一些特殊函數(shù)(如LOAD_FILE()、UUID()等)和一些不確定的語句操作,從而導(dǎo)致主從數(shù)據(jù)無法復(fù)制的問題。
?。?)row : 不記錄sql,只記錄每行數(shù)據(jù)的更改細(xì)節(jié)
優(yōu)點:詳細(xì)的記錄了每一行數(shù)據(jù)的更改細(xì)節(jié),這也意味著不會由于使用一些特殊函數(shù)或其他情況導(dǎo)致不能復(fù)制的問題。
缺點:由于row格式記錄了每一行數(shù)據(jù)的更改細(xì)節(jié),會產(chǎn)生大量的binlog日志內(nèi)容,性能不佳,并且會增大主從同步延遲出現(xiàn)的幾率。
?。?)mixed:一般的語句修改使用statment格式保存binlog,如一些函數(shù),statement無法完成主從復(fù)制的操作,則采用row格式保存binlog,MySQL會根據(jù)執(zhí)行的每一條具體的sql語句來區(qū)分對待記錄的日志形式,也就是在Statement和Row之間選擇一種。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
mysql數(shù)據(jù)庫同步原理下載
相關(guān)電子資料下載
- 常用于緩存處理的機制總結(jié) 如何避免緩存雪崩問題? 24
- SpringBoot物理線程、虛擬線程、Webflux性能比較 37
- mysql經(jīng)典面試題及答案 63
- 聊聊即將到來的MySQL5.7停服事件 179
- 基于Prometheus開源的完整監(jiān)控解決方案 25
- 基于控制臺的通訊錄管理系統(tǒng)功能介紹 59
- 什么是數(shù)據(jù)庫?除了MySQL還有哪些數(shù)據(jù)庫? 36
- 超好用的開源IP地址管理系統(tǒng),告別傳統(tǒng)Excel統(tǒng)計方式! 146
- Innodb中的Btree實現(xiàn)(一)·引言&insert篇 65
- 怎么查看MySQL語句有沒有用到索引 190