我們先來看下MYSQL異步複製的概念:
MySQL本身支持單向的、異步的複製。異步複製意味着在把數據從一臺機器拷貝到另一臺機器時有一個延時 – 最重要的是這意味着當應用系統的事務提交已經確認時數據並不能在同一時刻拷貝/應用到從機。通常這個延時是由網絡帶寬、資源可用性和系統負載決定的。然而,使用正確的組件並且調優,複製能做到接近瞬時完成。
當主庫有更新的時候,主庫會把更新操作的SQL寫入二進制日誌(Bin log),並維護一個二進制日誌文件的索引,以便於日誌文件輪迴(Rotate)。在從庫啓動異步複製的時候,從庫會開啓兩個I/O線程,其中一個線程連接主庫,要求主庫把二進制日誌的變化部分傳給從庫,並把傳回的日誌寫入本地磁盤。另一個線程則負責讀取本地寫入的二進制日誌,並在本地執行,以反映出這種變化。較老的版本在複製的時候只啓用一個I/O線程,實現這兩部分的功能。
其次來看下MySQL同步複製的概念:
同步複製可以定義爲數據在同一時刻被提交到一臺或多臺機器,通常這是通過衆所周知的“兩階段提交”做到的。雖然這確實給你在多系統中保持一致性,但也由於增加了額外的消息交換而造成性能下降。
默認情況下MySQL的複製是異步的,Master上所有的更新操作寫入Binlog之後並不確保所有的更新都被複制到Slave之上。異步操作雖然效率高,但是在Master/Slave出現問題的時候,存在很高數據不同步的風險,甚至可能丟失數據。
MySQL5.5引入半同步複製功能的,我這裏是MariaDB-10的,目的是爲了保證在master出問題的時候,至少有一臺Slave的數據是完整的。在超時的情況下也可以臨時轉入異步複製,保障業務的正常使用,直到一臺salve追趕上之後,繼續切換到半同步模式。
二、從節點配置:
三、master插入數據,slave測試是否同步:
Welcome to the xiaomazi blog!!