MySQL 主從同步方式


mysql 主從同步三種模式:異步復制、半同步復制、全同步復制

異步復制

  異步復制是mysql 默認的同步方式。

  在master為slave開通賬號密碼、ip授權之后,slave 可以從master進行數據同步,主要依賴的是master的binlog日志。

  slave會啟動兩個線程,IO Thread 和 SQL Thread。IO Thread 負責從master拉取binlog 日志,並寫入relay中繼日志。SQL Thread 負責將relay中繼日志中的變更進行重放,更新數據來達到跟master保持數據一致的目的。這個過程中,slave通過IO線程拉取binlog,master無需關注是否有slave需要同步,只做自己的事情,整個復制過程都是異步完成的,這個就是異步復制。

  異步復制的優勢是性能好,缺點是數據的安全性比較差。在某一刻主從之間的數據差異可能較大,主機掛掉之后從機接管,可能會丟失一部分數據。

半同步復制

  master更新操作寫入binlog之后會主動通知slave,slave接收到之后寫入relay log 即可應答,master只要收到至少一個ack應答,則會提交事務。

  可以發現,相比較於異步復制,半同步復制需要依賴至少一個slave將binlog寫入relay log,在性能上有所降低,但是可以保證至少有一個從庫跟master的數據是一致的,數據的安全性提高。

  對於數據一致性要求高的場景,可以采用半同步復制的同步策略,比如主庫掛掉時,准備接管的那一個從庫,對數據的一致性要求很比較高。

  半同步復制的優點是數據的安全性好,缺點是性能比異步復制稍低。

全同步復制

  全同步復制跟半同步復制的區別是,全同步復制必須收到所有從庫的ack,才會提交事務。

  主庫的事務提交依賴於后面所有的從庫,這樣一來性能就會明顯得下降。除非是對所有從庫數據一致性要求非常高的場景,否則我們一般不采用這種策略。

  全同步復制的數據一致性最好,但是性能也是最差的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM