MySQL復制被普遍認為是十分有效的,主服務器進行更改后,從服務器可在幾秒內做出相應的改動。但如果發生兩者之間同步緩慢的問題, 那么主要有以下兩個原因:
從結點磁盤問題: 復制操作對每個數據庫都是由一個線程來完成,通常執行變更時的滯后是由磁盤延遲引起的。在這種情況下,您應該考慮使用SSD加速這個過程。
帶寬低/網絡延遲高: 如果兩個服務器位于遠程位置(高延遲的情況下)或服務器之間的存在帶寬較低的問題,我們應使用下面的方法之一或者兩者結合使用,以最大限度地減少服務器間通信量。
使用基于語句的復制:基于行的復制會為數據庫中每一行的變更創建一個SQL 語句?;谡Z句的復制是應用程序發送的實際SQL語句的記錄。通?;谡Z句的復制在記錄大小方面更為有效。然而,你應該意識到,當你使用UPDATE ... LIMIT1時,基于語句的復制可能并不十分有效
壓縮通信量: MySQL支持使用 slave_compressed_protocol參數進行日志壓縮復制。這種方法將減少高達80%的服務器之間的通信。然而,壓縮是計算密集型的,所以你應該意識到這樣會產生一些額外的CPU利用率(這通常不屬于數據庫中的問題)。這個參數應該在兩個服務器上都啟用:
動態的從MySQL命令行輸入:SET GLOBALslave_compressed_protocol = 1;
在MySQL配置文件中進行配置:
#compress master-slave communication
slave_compressed_protocol = 1
最起碼,要理解你的復制行為為何滯后,然后了解如何使用正確的方法來解決滯后問題。是的,它就是這么容易,且十分有效。