日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL二进制日志的三种模式解析

發布時間:2025/4/16 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL二进制日志的三种模式解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文出自 http://www.abcdocker.com/abcdocker/213

Row Level 行模式

日志會記錄每一行數據被修改的形式,然后在slave端再對相同的數據進行修改
優點:在 row level模式下,bin-log中可以不記錄執行sql語句的上下文相關的信息,僅僅只需要記錄哪一條被修改。所以row level的日志內容會非常清楚的記錄每一行數據修改的細節。不會出現某些特定的情況下的儲存過程或者function,以及trigger的調用和觸發無法被正確復制的問題。
缺點:row level 所有的執行的語句當記錄到日志中的是后,都將以每行記錄的修改來記錄,會產生大量的日志內容。

Statement Leve (默認)

每一條會修改數據的sql語句都會記錄到master的bin-log中。slave在復制的時候sql進程會解析成和原來master端執行過的的相同的sql來再次執行。
優點:statement leve下的優點就是解決了row level下的缺點,不需要記錄每一行的數據變化,減少bin-log日志量,節約IO,提高性能。
缺點:由于只記錄,所以,在statement level下已經發現不少情況會造成MySQL的復制出現問題,主要是修改數據庫的時候使用某些特定的函數或者功能的是會出現。

Mixed 自動模式

在該模式下,MySQL會根據執行的sql語句來區分對待記錄日志的格式,也就是在statement和Row之前選擇一種,如果sql語句確實就是update或者delete等修改數據的語句,那么還會記錄所有行的變更。
###解析行模式和語句模式的區別
如果我們有要刪除一百萬條記錄,在行模式(ROW )日志會記載100萬條刪除命令,而語句模式(ststement)只需記錄一條delete * from test。

企業場景如何選擇binlog的模式

1、如果生產中使用MySQL的特殊功能相對較少(儲存過程,觸發器,函數),選擇默認的語句模式即Statement Level。
2、如果生產中使用MySQL的特殊功能比較多的,可以選用Mixed模式。
3、如果生產中使用MySQL的特殊功能較多,有些昂數據最大化一致,此時最好Row level模式,但要注意該模式的日志量將非常大。

查看binlog模式

mysql> show global variables like "%binlog_format%"

配置binlog日志模式

# vim my.cnf #在[mysql]模塊中配置 log-bin = /data/3306/mysql-bin binlog_format="STATEMENT" #binlog_format="ROW" #binlog_format="MIXED" 也可以修改環境變量來修改binlog的模式 mysql> SET global binlog_format='STATEMENT'

總結

以上是生活随笔為你收集整理的MySQL二进制日志的三种模式解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。