標籤:

半同步複製介紹

MySQL 5.5開始支持半同步複製(Semi-SyncnMySQL Replication),半同步提供了更好的災難恢復性。

半同步的原理是,主庫和它的從庫都啟用半同步特性,當一個從庫連接主庫時標識自己是否支持半同步,如果主庫啟用了半同步,且擁有至少一個半同步從庫,一個事務提交會阻塞直到確認至少一個半同步從庫已經「接收到事務事件(event)」,否則一個「超時」發生。

半同步從庫在寫入事件(event)到中繼日誌(relay log),刷新到磁碟後才確認「接收到事務事件」。

如果一個「超時」發生,即沒有任何一個半同步從庫確認接收到事務事件,那麼主庫自動切換到非同步複製模式。

當至少一個半同步從庫追趕上主庫,主庫自動切換到半同步模式。

這裡的「半同步」,可以這樣理解:

傳統的非同步同步,主庫寫事務事件到二進位日誌,從庫索取主庫日誌,這不能確保事務事件被傳送到從庫。而對於全同步(fully synchronous replication)複製,主庫提交事務,必須等待從庫也提交這個事務成功,才能完成這個事務,這樣容易造成事務的延遲。所以,出現了半同步,半同步介於非同步和全同步之間。

需要留意到是,半同步對於網路要求高,它僅適用於高速內網。雖然MySQL 5.5的半同步表現不佳,但是,據官方文檔,在新的5.7版本中,它已經得到了改善。


推薦閱讀:

1.3 Mysql 安裝與使用-基礎配置-NodeJs+Express+Mysql實戰
Mysql在RC隔離級別下是如何實現讀不阻塞的?
PHP高並發下的數據同步的解決方法?

TAG:MySQL |