難以置信,MySQL也能夠無損自由切換

  MySQL一般在人們眼中就是一個低端、開源、大衆化的數據庫產品,它的穩定性和可用性一直被人們所置疑,被認爲難登大雅之堂,只適用於互聯網應用,難於應用到可用性高的場景中,好比金融、證券等行業。然而時代的變化太快,MySQL也不能再以過去的眼光來看,從MySQL金融版的誕生開始,它已經再也不是那個扶不起的阿斗,它已經脫胎換骨,以一個嶄新的形象出如今數據庫的高端產品中。數據庫

        這一切真的難以置信,在開源數據庫產品中,MySQL歷來都是一枝獨秀,但在表面風光的同時,倒是DBA和資深用戶的滿心苦澀。因爲硬件、網絡的可用性還難以達到理想的要求,不管出現任何故障,數據庫系統都必須保證其可用性。對於MySQL來講,你們所熟知的主備集羣是最多見的解決方案。因爲MySQL的架構設計緣由,主備集羣的解決方案雖然不完美,但也是其最好的解決方案了。但其中存在的可用性隱患,倒是DBA和資深用戶的心裏無奈。網絡

        MySQL的主備集羣方案,對於大多數應用系統能夠知足基本的可用性要求了,若是要求更高的話,只能去選擇商業數據庫,而商業數據庫的成本卻又難以承受。到底存在什麼問題呢?架構

        熟悉MySQL的都知道,MySQL是採用binlog來搭建主備集羣的,主機上的事務提交時,經過兩階段事務將binlog寫入到磁盤,而後再將其發送給備機,備機收到後重放日誌,以完成事務與主機的同步。以下圖所示架構設計

        顯而易見,主備之間會存在一些延遲,當主機已經將事務提交後,備機也許尚未收到這條事務的binlog,此時在備機上這條事務其實的缺失的。爲了儘量下降主備延遲,後來MySQL又設計了Semi-Sync,以下圖所示:設計

相關文章
相關標籤/搜索