1. 程式人生 > >參數binlog_row_image設置MINIMAL,你今天被坑了嗎?

參數binlog_row_image設置MINIMAL,你今天被坑了嗎?

vpd 場景 bin 部分 所有 images 表結構 mys 變更

今天網友"芬達"跟我討論一個參數binlog_row_image,在什麽場景下設置為MINIMAL,我覺得這個案例很有意義,尤其是在生產環境中,要慎重設置這個參數。


首先這個MINIMAL,只會在binlog裏記錄被影響的行,而不能像默認的FULL一樣,記錄完整的變更前和變更後的所有記錄,這裏就會產生一個問題,數據被誤更改,無法用mysqlbinlog等工具閃回,另外大數據那邊用canal抽binlog,會造成數據不準確等一系列問題。


下面通過模擬實驗,看看binlog裏記錄的內容。


表結構如下:

技術分享圖片


裏面的數據:

技術分享圖片


此時,執行一條update變更操作:

技術分享圖片


馬上看下binlog裏面記錄的內容:

技術分享圖片

註意看紅色框部分的內容,變更前的完整原始數據並沒有被記錄,固無法閃回。


雖然MINIMAL可以減少binlog的文件大小(binlog_format = ROW),降低磁盤IO,但從數據安全角度來看,這將是危險的!


這裏感謝網友"芬達"提供素材。



參數binlog_row_image設置MINIMAL,你今天被坑了嗎?