1. 程式人生 > >深入解讀阿裏雲數據庫POLARDB核心功能物理復制技術

深入解讀阿裏雲數據庫POLARDB核心功能物理復制技術

易用 article 底層 性方面 存儲 機械 高性能 raft 認識

日誌是數據庫的重要組成部份,按順序以增量的方式記錄了數據庫上所有的操作,日誌模塊的設計對於數據庫的可靠性、穩定性和性能都非常重要。 可靠性方面,在有一個數據文件的基礎全量備份後,對運行中的數據庫來說,日誌文件的重要性大於數據文件,只要操作記錄到日誌中並完成落盤,就等於操作完成,無須等待數據文件落盤。因為日誌的順序和增量方式,使得數據庫的增量實時備份(包括備庫)成為可能,更可以使用異步、同步或Raft多數等方式通過保護日誌來保護所有的數據。

穩定性方面,日誌的增量模式減少了需要寫出的數據量,日誌的順序寫對於IO操作十分友好,可以充分節約尋道時間(機械硬盤)和寫入緩存,使得日誌的寫操作可以十分平穩,在面對高並發的事務時,不易出現劇烈的抖動,從而得到高的穩定性和性能。按照日誌的組織形式,可以分為物理日誌和邏輯日誌,物理日誌使用更偏向底層數據塊操作的方式來描述變更,邏輯日誌則偏向於使用記錄鏡像或SQL語句的方式來描述變更,事務引摯一般使用物理日誌的模式來記錄事務的底層操作,而非事務引摯則一般使用邏輯日誌的方式。

用編程語言來打比方的話,物理日誌相當於使用匯編語言來記錄了操作,而邏輯日誌則相當於使用Go/Python等級別的語言來記錄操作,物理日誌相比邏輯日誌具有更高的可靠性、穩定性和性能。回顧數據庫的歷史,商業數據庫都只支持物理日誌,從來沒有邏輯日誌的說法。MySQL因為其上下分層(SQL層和引摯層)的設計導致事務存貯引摯層必須有獨立的物理日誌,以及多引摯支持的原因,必須在SQL層設計邏輯日誌以透明化不同存儲引摯(主備可以不同引摯)的支持,形成了一個雙日誌的現狀,對MySQL的穩定性和性能帶來了極大的困難和挑戰。

物理日誌因其格式比較底層,使其非常難以創建只讀實例,並且從只讀實例切換為讀寫實例需要比較長的時間,可以參考Oracel數據庫的發展歷程,長久以來一直沒有支持隨時只讀的備庫,將備庫切換為主庫需要極期嚴格的步驟,需要比較長的時間,比較難以實現自動化,無法輕松實現互聯網讀擴展流量擴展的需求。而邏輯日誌因其格式比較上層,使其非常容易創建只讀實例,從只讀實例轉換為讀寫實例可以在秒級完成,並形成了一整套的增量數據訂閱消費。MySQL在享受邏輯復制好處時,也承受了邏輯復制帶來的一些限制:

存儲引摯層難以直接產生邏輯日誌,為了數據的一致性,在物理日誌和邏輯日誌之間引入了XA(2PC)機制,給穩定性和性能帶來了極大的限制和挑戰,導致事務處理性能和傳統商業數據庫相比有較大差距,基於物理日誌則差距極小。
同一事務的MySQL邏輯日誌需要連續寫出,因此無法支持較大的事務操作,過大的事務會導致操作失敗。基於物理日誌,同一個操作的日誌可以分段(事務開始、操作1、操作2、事務提交)寫出,因此可以支持大事務操作。
MySQL現有邏輯日誌保存了整條記錄的前後鏡象,造成邏輯日誌寫入量較大增加IO壓力,易引起性能下降和抖動。物理日誌只記錄變化字段,格式緊湊以減少總日誌量,具備較好的IO性能,不易引起性能下降和抖動,肯有更高的性能和穩定性。

MySQL邏輯日誌,在回入時需要重新經過SQL層代碼,執行路徑較長,並且不易並行處理,易造成備庫時延,即邏輯日誌產生的速度超過回放的速度;物理日誌因包含完整事務信息,更易用事務一致性實現並行回放,可極大提升備庫恢復的速度,做到高壓力下主備ms級時延。如下圖:

技術分享圖片

MySQL邏輯日誌,不包含事務信息,無法做連續性檢測,可以從任意點開始恢復,不熟悉不專業的操作容易,造成問題;物理日誌包含完整事務信息,可以做連續性檢測,會自動識別上一次的中斷點,減少人工判斷操作,可有效防止人為誤操作。
因此基於邏輯復制的MySQL在大表加字段、建索引等操作上,主備復制的體驗非常不夠好。POLARDB在充分認識到MySQL邏輯復制的優缺點後,選擇以物理復制為基礎實現復制節點(Replica),提升了主備復制的效率和體驗,為廣大客戶提供了穩定、可靠、高性能能的只讀節點,引領了新一代復制技術的發展。

相關文章:
雲數據庫POLARDB優勢解讀系列文章之①——10分鐘入門
https://yq.aliyun.com/articles/673623

雲數據庫POLARDB優勢解讀系列文章之②——高性價比
https://yq.aliyun.com/articles/673636

雲數據庫POLARDB優勢解讀系列文章之③——分鐘級彈性
https://yq.aliyun.com/articles/669029

雲數據庫POLARDB優勢解讀系列文章之④——物理復制
https://yq.aliyun.com/articles/674229

雲數據庫POLARDB優勢解讀系列文章之⑤——會話讀一致性
https://yq.aliyun.com/articles/674234

深入解讀阿裏雲數據庫POLARDB核心功能物理復制技術