一、Statement level(基於SQL語句的複製,默認)mysql
每一條會修改數據的sql語句會記錄到binlog中。sql
優勢:不須要記錄每一條SQL語句與每行的數據變化,這樣子binlog的日誌也會比較少,減小了磁盤IO,提升性能。函數
缺點:在某些狀況下會致使master-slave中的數據不一致(如sleep()函數, last_insert_id(),以及user-defined functions(udf)等會出現問題)性能
二、Row level(基於行的複製)spa
不記錄每一條SQL語句的上下文信息,僅需記錄哪條數據被修改了,修改爲了什麼樣子了。日誌
優勢:不會出現某些特定狀況下的存儲過程、或function、或trigger的調用和觸 發沒法被正確複製的問題。io
缺點:會產生大量的日誌,尤爲是alter table的時候會讓日誌暴漲。table
不管是增量備份仍是主從複製,都是須要開啓mysql-binlog日誌,最好跟數據目錄設置到不一樣的磁盤分區,能夠下降io等待,提高性能;而且在磁盤故障的時候能夠利用mysql-binlog恢復數據。ast