高性能MySQL 第十章 複製

 

複製解決的基本問題是讓一臺服務器的數據與其餘服務器保持同步。一臺主庫的數據能夠同步到多臺備庫上,備庫自己也能夠被配置成另一臺服務器的主庫。主庫和備庫之間能夠有多重不一樣的組合方式。服務器

 

MySQL 支持兩種複製方式:網絡

一、基於行的複製負載均衡

二、基於語句的複製異步

基於語句的複製(也稱爲邏輯複製)早在 MySQL3.23 版本中就存在,而基於行的複製方式在 5.1 版本中才被加進來。這兩種方式都是經過在主庫上記錄二進制日誌、在備庫重放日誌的方式來實現異步的數據複製。這意味着,在同一時間點備庫上的數據可能與主庫存在不一致,而且沒法保證主備之間的延遲。一些大的語句可能致使備庫產生幾秒、幾分鐘甚至幾個小時的延遲。測試

 

複製解決的問題:優化

一、數據分佈編碼

MySQL 複製一般不會對帶寬形成很大的壓力,但在 5.1 版本引入的基於行的複製會比傳統的基於語句的複製模式的帶寬壓力更大。能夠隨意地中止或開始複製,並在不一樣的地址位置來分佈數據備份,例如不一樣的數據中心。即便在不穩定的網絡環境下,遠程複製也能夠工做。但若是爲了保持很低的複製延遲,最好有一個穩定的、低延遲鏈接。設計

二、負載均衡日誌

經過 MySQL 複製能夠將讀操做分佈到多個服務器上,實現對讀密集型應用的優化,而且實現很方便,經過簡單的代碼修改就能實現基本的負載均衡。對於小規模的應用,能夠簡單地對機器名作硬編碼或使用 DNS 輪詢(將一個機器指向多個 IP 地址)。固然也能夠使用更復雜的方法,例如網絡負載均衡這一類的標準負載均衡解決方案,可以很好地將負載分配到不一樣的 MySQL 服務器上。Linux 虛擬服務器也能很好地工做,第 11 張將詳細地討論負載均衡。同步

三、備份

對於備份來講,複製是一項頗有意義的技術補充,但複製既不是備份也不可以去掉備份。

四、高可用性和故障切換

複製可以幫助應用程序避免 MySQL 單點失敗,一個包含複製的設計良好的故障切換系統可以顯著地縮短宕機時間。

五、MySQL 升級測試

這種作法比較廣泛,使用一個更高版本的 MySQL 做爲備庫,保證在升級所有實例前,查詢可以在備庫按照預期執行。

相關文章
相關標籤/搜索