MySQL binlog三種模式


MySQL binlog三種模式:
1)Row Level  ##行模式
日志中會記錄成每一行數據被修改的情況,然后在slave端再對相同的數據進行修改。
優點:row level的日志內容會非常清楚的記錄每一行數據修改的細節,做復制的時候不會發生不一致
缺點:產生大量的日志,占用本地數據量大
 
2)Statement Level(默認)語句模式
每一條被修改數據的sql都會記錄到master的bin-log中。slave在復制的時候sql進程會解析成和原來master端執行過的相同的sql來再次執行
優點:解決了row level下的缺點,不需要記錄每一行數據的變化,減少bin-log日志量,節約磁盤IO,提高性能,只記錄執行語句的細節,以及執行語句的時候上下文的信息
缺點:對某些功能復制不一致, 容易出現主從復制不一致
 
3)Mixed  ##混合模式
   實際上就是前兩種模式的結合。在mixed模式下,mysql會根據執行的每一條具體的sql語句來區分記錄的日志細節,也就是在statement和row之間選擇一種;新版本row revel模式做了優化,遇到表結構變更的語句會以statement模式來記錄,如是update或者delete等修改數據的語句還是會以row level模式記錄。
 
互聯網公司,使用mysql的功能相對少(存儲過程、觸發器、函數);選擇mysql默認的statement level模式就行
如公司使用mysql的特殊功能(存儲存儲、觸發器、函數),則選擇mixed模式
如公司使用mysql的特殊功能(存儲存儲、觸發器、函數)又希望數據最大化一致,此時最好row level模式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM