復制功能不僅能夠構建高可用的應用,同時也是高可用性,可擴展性,災難恢復,備份以及數據倉庫等工作的基礎。
mysql支持兩種復制方式:基于語句的復制和基于行的復制。基于語句的復制(也成為邏輯復制)是早期版本提供的功能,基于行的復制是5.1版本加入的。這兩種方式都是通過在主庫上記錄二進制日志,在從庫上重放日志來實現異步的數據復制。這意味著,同一時間,主庫和從庫的數據可能是不一致的。并且無法保證主從之間的延遲。一些大的語句可能導致主從之間幾秒,幾分鐘,甚至幾小時的延遲。
復制通常不會增加主庫的開銷.主要是啟動二進制日志帶來的開銷.但是出于備份但是出于備份或即使從崩潰中恢復的目的,這點開銷是必要的.(個人理解:這里應該說的是事務日志,二進制日志和事務日志應該是一個東西).除此之外,每個從庫要從主庫上讀取日志,所以會增加主庫的網絡IO開銷.
基于語句的復制其實是把sql語句在從庫上重放,基于行的復制,要在主庫上記錄那些行被修改了,然后在從庫上做對應的操作.
mysql不支持一個從庫有多個主庫.
從庫不僅可以作為分擔讀壓力的庫.而且可以作為全文檢索的庫.因為mysql本身支持全文檢索,只在MyISAM存儲引擎下,才支持全文檢索,所以可以把從庫的存儲引擎設置為MyISAM,然后在從庫上做全文檢索.
最好在設計初期就能容忍復制的延遲,如果從庫的數據出現延遲就會導致無法很好的工作,那么應用程序也許就不該用到復制.
具體配置主從復制的方法和細節暫時不學習了.