mysql數(shù)據(jù)庫同步原理
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
MySQL主從復(fù)制原理
為了減輕主庫的壓力,應(yīng)該在系統(tǒng)應(yīng)用層面做讀寫分離,寫操作走主庫,讀操作走從庫,下圖為MySQL官網(wǎng)給出的主從復(fù)制的原理圖,從圖中可以簡單的了解讀寫分離及主從同步的過程,分散了數(shù)據(jù)庫的訪問壓力,提升整個(gè)系統(tǒng)的性能和可用性,降低了大訪問量引發(fā)數(shù)據(jù)庫宕機(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%
下載地址
mysql數(shù)據(jù)庫同步原理下載
相關(guān)電子資料下載
- 常用于緩存處理的機(jī)制總結(jié) 如何避免緩存雪崩問題? 24
- SpringBoot物理線程、虛擬線程、Webflux性能比較 37
- mysql經(jīng)典面試題及答案 63
- 聊聊即將到來的MySQL5.7停服事件 179
- 基于Prometheus開源的完整監(jiān)控解決方案 25
- 基于控制臺(tái)的通訊錄管理系統(tǒng)功能介紹 59
- 什么是數(shù)據(jù)庫?除了MySQL還有哪些數(shù)據(jù)庫? 36
- 超好用的開源IP地址管理系統(tǒng),告別傳統(tǒng)Excel統(tǒng)計(jì)方式! 146
- Innodb中的Btree實(shí)現(xiàn)(一)·引言&insert篇 65
- 怎么查看MySQL語句有沒有用到索引 190