1、日誌類型sql
|
STATMENT
|
ROW
|
說明
|
基於SQL語句的複製(statement-based replication, SBR),每一條會修改數據的sql語句會記錄到binlog中。
是bin log的默認格式。
|
基於行的複製(row-based replication, RBR):不記錄每一條SQL語句的上下文信息,僅保存哪條記錄被修改。
|
優勢
|
不須要記錄每一條SQL語句與每行的數據變化,減小了bin log的日誌量,節約了磁盤IO,提升性能。
|
會很是清楚的記錄下每一行數據修改的細節,不會出現某些特定狀況下的存儲過程、或function、或trigger的調用和觸發沒法被正確複製的問題。
|
缺點
|
在某些狀況下會致使master-slave中的數據不一致,如sleep()函數, last_insert_id(),以及user-defined functions(udf)等會出現問題。
|
會產生大量的日誌,尤爲是alter table的時候會讓日誌暴漲。
|
|
redo log
|
binlog
|
文件大小
|
redo log 的大小是固定的。
|
binlog 可經過配置參數max_binlog_size 設置每一個 binlog 文件的大小。
|
實現方式
|
redo log 是 InnoDB 引擎層實現的,並非全部引擎都有。
|
binlog是 Server 層實現的,全部引擎均可以使用 binlog 日誌。
|
記錄方式
|
redo log 採用循環寫的方式記錄,當寫到結尾時,會回到開頭循環寫日誌。日誌上的記錄修改落盤後,日誌會被覆蓋掉,沒法用於數據回滾/數據恢復等操做。
|
binlog 經過追加的方式記錄,當文件大小大於給定值後,日誌會發生滾動,以後的日誌記錄到新的文件上,不會覆蓋之前的記錄。
|