0-該值爲零,是我們極爲渴望看到的情況,表示主從複製良好,可以認爲lag不存在。(無延遲)
正值-表示主從已經出現延時,數字越大表示從庫落後主庫越多。(有延遲)
負值-幾乎很少見,只是聽一些資深的DBA說見過,其實這是一個BUG值,該參數是不支持負值的,也就是不應該出現。(BUG)
1. 保證主庫的DDL快速執行。
2. 還有就是主庫寫對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit =1之類的設置,而slave則不需要這麼高的數據安全,完全可以將sync_binlog設置爲0或者關閉binlog,innodb_flushlog也可以設置爲0來提高sql的執行效率。
3. 選擇支持多線程的mysql版本來進行主從複製,避免併發高峯時可能的延遲,mysql-5.6.3已經支持了多線程的主從複製。
4. 另外就是使用比主庫更好的硬件設備作爲slave。
註釋:innodb_flush_log_at_trx_commit默認值1的意思是每一次事務提交或事務外的指令都需要把日誌寫入(flush)硬盤,這是很費時的。特別是使用電池供電緩存(Batterybacked upcache)時。設成2對於很多運用,特別是從MyISAM錶轉過來的是可以的,它的意思是不寫入硬盤而是寫入系統緩存。日誌仍然會每秒flush到硬,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的數據。而值2只會在整個操作系統掛了時纔可能丟數據。