今天網友"芬達"跟我討論一個參數binlog_row_image,在什麼場景下設置爲MINIMAL,我覺得這個案例很有意義,尤其是在生產環境中,要慎重設置這個參數。
首先這個MINIMAL,只會在binlog裏記錄被影響的行,而不能像默認的FULL一樣,記錄完整的變更前和變更後的所有記錄,這裏就會產生一個問題,數據被誤更改,無法用mysqlbinlog等工具閃回,另外大數據那邊用canal抽binlog,會造成數據不準確等一系列問題。
下面通過模擬實驗,看看binlog裏記錄的內容。
表結構如下:
裏面的數據:
此時,執行一條update變更操作:
馬上看下binlog裏面記錄的內容:
注意看紅色框部分的內容,變更前的完整原始數據並沒有被記錄,固無法閃回。
雖然MINIMAL可以減少binlog的文件大小(binlog_format = ROW),降低磁盤IO,但從數據安全角度來看,這將是危險的!
這裏感謝網友"芬達"提供素材。