腾讯关系型数据库达成“双百”里程碑——6大企业级MySQL特性全面解析
騰訊關系型數據庫-企業(yè)級MySQL(原CDB,騰訊云TencentDB for MySQL)達成了 百萬核 和 百PB 的“雙百”里程碑!存儲規(guī)模同比增速高達 80% ,連續(xù)兩年在全球 TOP5 公有云廠商中增速位列第一!作為騰訊云規(guī)模最大的數據庫產品,在11月攜手騰訊云數據庫入選Gartner云數據庫管理系統(tǒng)魔力象限,意味著騰訊云數據庫進入全球頂級序列!截止目前,已經為Bilibili、水滴籌、小紅書、微盟、富途證券、云集、暢游等多家大客戶提供服務,支撐了618、雙11等大型活動的突發(fā)保障,實現了10倍流量的彈性擴容能力。同時在內部也服務了多款騰訊明星產品,如 微信、王者榮耀、微視、騰訊會議等。
騰訊關系型數據庫品牌升級為“騰訊關系型數據庫Tencent Database SQL企業(yè)級MySQL”,將進一步匯聚公司數據庫方面的專家力量,助力CDB/CynosDB的成長和發(fā)展!
隨著規(guī)模、行業(yè)覆蓋率的爆發(fā)式增長,CDB在性能、穩(wěn)定性、成本和SaaS產品能力上面臨更大的挑戰(zhàn)。因此,圍繞著企業(yè)級云數據庫的目標,持續(xù)完善CDB的六大企業(yè)級能力:定制的企業(yè)級內核、企業(yè)級高可用高可靠、企業(yè)級數據安全、企業(yè)級擴展性、智能調優(yōu)、自研存儲引擎。
企業(yè)級定制的內核
傳統(tǒng)的 Oracle MySQL 社區(qū)版內核以及企業(yè)版內核已不能滿足 CDB/CynosDB 產品的快速發(fā)展,有很多的業(yè)務或運維問題在官方都得不到有效解決,如電商秒殺場景的性能問題,刪除大表所導致的性能抖動問題、游戲業(yè)務加減字段所導致的業(yè)務停服問題等。為了解決云上業(yè)務所面臨的問題,降低用戶操作復雜性,提升運維效率,我們定義并實現了云數據庫內核——(TXSQL) Tencent MySQL。TXSQL有以下的優(yōu)勢:
領先的性能 & 極致業(yè)務場景性能優(yōu)化 TXSQL 對 SQL 語句的執(zhí)行流程進行了全鏈路的優(yōu)化,在查詢優(yōu)化器、算子下推、主備一致性、存儲引擎(并發(fā)訪問控制、日志系統(tǒng)、鎖系統(tǒng)、回滾段、crash recovery)等進行了一系列的優(yōu)化。測試表明,在高并發(fā)場景下,CDB 的讀寫性能是官方性能的 150% 以上,大內存實例的啟動時間是官方版本的 1/5 ;計算與存儲分離的產品 CynosDB for MySQL,其讀性能是 CDB 的 120%,寫性能是 CDB 的 2 倍。
在服務業(yè)務的過程中,我們解決了很多業(yè)務的性能問題,如電商秒殺場景的性能問題、游戲對表變更時的停服問題、高并發(fā)壓力下 crash recovery 速度慢的問題、主備延遲問題等,同時,我們將20+的Patch優(yōu)化也貢獻給了官方 & MariaDB,并得到了官方的認可。
豐富的企業(yè)級特性 完善的企業(yè)級特數據庫能力。如金融行業(yè)要求的數據審計、加密、數據強一致,臺富云所要求的自定義密鑰以及密鑰管理服務、游戲行業(yè)所要求的高并發(fā)、電商行業(yè)所要求的極限性能等
多樣化的存儲引擎。TXSQL 為了滿足業(yè)務的多樣化需求,不僅滿足于傳統(tǒng)的事物處理能力,還做了以下兩個存儲引擎:
支持基于LSM-Tree的TxRocks 高壓縮引擎,Innodb & TxRocksDB 可以共存,無縫滿足用戶降低存儲空間的要求。此功能已經微信紅包上使用兩年有余,相較InnoDB引擎,只使用了之前 1/5 的機器,極大的節(jié)約了成本;
支持列存引擎 CStore,具備輕量級單機事務處理能力,用戶不需要解決異構數據庫之間的數據同步問題,直接可以使用 CDB 的列存引擎,進行數據分析,極大的降低了業(yè)務在TP和AP之間做數據同步的復雜性。
企業(yè)級高可用高可靠
可用性是CDB的生命線,當前可用性達到了99.99%以上。故障切換每月達1300+,平均切換時間33秒,50%以上的切換在20秒內完成。但隨著規(guī)模的快速增長,我們發(fā)現原來單一的讀寫探測機制已經無法滿足用戶對可用性更高的要求。實例不可用不僅表現為探測不通,也可能是請求緩慢的積壓、整機硬件的異常、實例快速的反復重啟……這些異常,原有的探測機制并不能很好的發(fā)現。為此在故障發(fā)現方面,我們做了大量的優(yōu)化。核心目標是盡可能快的發(fā)現確定性的、具備共性的故障:
[?] 實時監(jiān)聽TXSQL錯誤日志。TXSQL內部新增了多個監(jiān)控指標,例如監(jiān)聽IO和鎖等待延遲,在實例出現請求堆積但還未崩潰前實現切換
[?] 實時監(jiān)聽系統(tǒng)日志,例如端口頻繁up/down、softlookup
[?] 檢測整機磁盤異常,例如壞塊、hang盤、慢盤、只讀
[?] 實例快速反復Crash。探測無法覆蓋,但實際業(yè)務影響很大。
[?] 高負載場景。高負載場景下,復制線程可能分配不到CPU,導致主備無法同步,可能造成數據丟失
通過上述措施,我們已經覆蓋了已知的97.71%極端故障場景,為此我們還在進一步優(yōu)化。但故障切換畢竟是已經影響了使用,為此我們結合了公司網管的相關告警策略,當機器有故障或預警時,我們提前將隱患機器隔離并觸發(fā)切換。
數據可靠性上,支持跨園區(qū)部署和園區(qū)故障自動切換。在CDB完成了對等節(jié)點的架構升級后,單實例內的節(jié)點可以任意擴展、獨立指定園區(qū)部署。經典的部署方式是,1主1備同園區(qū),另1備跨園區(qū)。當主機故障時,可以實現快速切換,當主園區(qū)故障時,可以實現分鐘級自動切換至跨園區(qū)節(jié)點。因為公有云VPC網絡控制面使用的數據庫是CDB,極端情況下CDB跨園區(qū)切換會出現相互依賴的場景。為了解決網絡側的跨園區(qū)自動切換,CDB也配合業(yè)務一起做全鏈路的跨園區(qū)容災方案。跨園區(qū)實例間如何避免雙寫,是保證數據一致性的關鍵問題。為此,TXSQL內核全版本實現了work mode工作模式和租約機制。當園區(qū)隔離時,單園區(qū)內的機器可能是連通的,園區(qū)間網絡不通。通過同機部署的ha_agent保持跟TXSQL有T1的租約,ha_agent跟ZK有T2的租約,保證2T1 < T2。當到達T1未續(xù)租時,TXSQL處于offline mode,不接受用戶請求,當到達T2時刻,可以確認此時原master一定不可寫,安全進行故障切換。
企業(yè)級數據安全
數據安全重于泰山,圍繞數據安全,CDB團隊從數據備份、部署模型、訪問控制和權限分離四方面進行建設。
CDB備份系統(tǒng)九鼎,提供了以下企業(yè)級備份恢復能力:
[?] 高性能備份恢復能力。備份速度700MB/s,回檔速度(克隆實例,包含了增量數據同步)540MB/s。以1TB的數據為例,備份約25分鐘,回檔約33分鐘。
[?] 在線熱備。支持Backup Lock和Binlog Lock,僅在備份完成瞬間阻塞寫入,備份期間對用戶幾乎無影響。
[?] 無鎖備份。采用Binlog冪等回放的機制,在InnoDB表有唯一鍵場景下,備份不加鎖。
[?] 流式備份,“zero storage”。備份數據流式上傳,無需本地中轉。
[?] 壓縮備份。采用quicklz壓縮,壓縮比3:1。
[?] 整實例/指定部分庫表備份。任意指定庫表備份。
[?] 排除部分庫表備份。排除指定庫表備份,例如mysql庫等。
[?] 多級資源控制。備份帶寬跨AZ負載均衡,單機流控和資源強隔離。
[?] 支持MySQL TDE。支持加密數據的備份和恢復。
部署模型。實例內節(jié)點跨機架跨交換機部署;跨園區(qū)多節(jié)點部署;跨城災備實例;置放群組功能,不同的業(yè)務可以指定不同群組,群組之間做跨機器和交換機的部署。
訪問控制。企業(yè)級的數據審計能力。在極限壓測場景下,性能損失在 3% 以內,提供了每個語句級的SQL執(zhí)行路徑,包括消耗的CPU、掃描/返回行數、鎖等待時間、IO消耗等一系列內部執(zhí)行的指標。除了事后審計外,可以通過SQL限流來控制服務并發(fā),甚至拒絕某一類SQL的運行,可以達到事前攔截的效果。
TDE數據加密,即使備份數據被泄露,在沒有密鑰的情況下,依然保證數據不被泄露。
權限分離。線上生產環(huán)境數據和備份數據權限分離。生產環(huán)境權限由運維審批并記錄,備份數據采用“一次寫入多次讀取”的權限控制,確保研發(fā)以及備份系統(tǒng)只有數據寫入權限,避免人為造成的數據丟失。
企業(yè)級擴展性
擴展性包括了兩部分,單節(jié)點讀寫能力擴展和多節(jié)點讀擴展。TXSQL內核提供了thread-pool功能。支持10萬連接,以及在減少線程運行時切換消耗和創(chuàng)建銷毀的消耗的同時,避免高并發(fā)場景下,多線程爭搶系統(tǒng)資源造成的性能急劇下降,從而顯著提升高并發(fā)下的系統(tǒng)性能。
TXSQL線程池多節(jié)點讀擴展,節(jié)點間根據wrr算法做負載均衡和容災。當只讀節(jié)點不可用,或者到達設置的主從延遲閾值,將在 30秒 內完成容災剔除。為了避免全部節(jié)點被剔除,可以設置只讀最少保留數,防止實例高負載引起的雪崩。當只讀節(jié)點恢復可用,并且延遲低于閾值,會自動觸發(fā)加回策略,重新負載均衡。
添加只讀節(jié)點后,會出現兩個地址,需要業(yè)務層進行讀寫分離。為此,CDB即將上線數據庫代理服務,業(yè)務只需要一個讀寫地址,自動做讀寫分離和讀負載均衡。
智能調優(yōu)
性能是數據庫一個關鍵指標,除了SQL優(yōu)化和索引優(yōu)化等方法外,參數調優(yōu)(Tuning)也是提升數據庫性能的重要手段。以前依靠專家經驗,人時成本很高,加上MySQL參數有400多個,參數組合空間非常大。數據庫參數智能調優(yōu)服務應運而生,它使用深度強化學習( Deep RL)方法調優(yōu)數據庫參數相比現存方法,CDBTune無需細分負載類型,無需積累大量樣本,可以智能學習參數調優(yōu)過程,獲得較好的參數調優(yōu)效果。
CDBTune_arch通過精心設計的負載重放和并行調優(yōu),可以對業(yè)務無損的進行指定負載下的參數并行調優(yōu),小時級即可推薦一套較好的參數模板,達到相同資源消耗情況下,TPS更高RT更低。
以讀寫場景為例,使用CDBTune調參后TPS提高33%,RT下降了70%。
相關結果也發(fā)表在了 數據庫頂會SIGMOD《An End-to-End Automatic Cloud Database Tuning System Using Deep Reinforcement Learning》。
自研存儲引擎(TxRocks和CSTORE)
TxRocks是TXSQL團隊基于RocksDB的事務型存儲引擎,得益于RocksDB LSM Tree存儲結構,既減少了InnoDB頁面半滿和碎片浪費,又可以使用緊湊格式存儲,因此TxRocks在保持與InnoDB接近的性能的前提下,存儲空間相比InnoDB可以節(jié)省一半甚至更多,非常適合對事務讀寫性能有要求,且數據存儲量大的業(yè)務。
CSTORE是TXSQL內核團隊面向OLAP場景研發(fā)的列存引擎,通過CSTORE,用戶可以完成大型數據的查詢與分析,可以適用于歷史存檔數據、日志數據、大數據、更新不頻繁的OLTP數據和數據倉庫和分析處理,數據處理量達到PB級別。在性能方面,通過高壓縮比、快速加載、針對性的查詢優(yōu)化這些技術實現,向用戶提供高效的服務,從而達到單節(jié)點可支持百億行記錄的秒級查詢。TXSQL的列存儲可以達到 10:1 的壓縮比,通過減少磁盤空間的使用,實現大批量數據的秒級寫入和讀取。在已有MySQL查詢優(yōu)化的基礎上,利用多種形式的稀疏索引過濾數據實現高速的數據過濾于選擇。并利用多列并行處理的方式,高速完成數據的加載與處理。
云原生數據庫CynosDB
在MySQL的架構下,依然有幾朵烏云一直無法散去:主備延遲不可控、擴容依賴單機容量上限、備份/Crash Recovery時間長、資源利用率較低。為此,CDB/CynosDB團隊推出了新一代計算和存儲分離架構的數據庫CynosDB for MySQL,采用Log is Database的Share Storage架構,100%兼容MySQL語法。
通過計算和存儲分離,實現資源池化,彈性伸縮,資源利用率可以突破單機限制,實現秒級擴容。
主備同步不再經過Binlog,而是通過Redo進行物理復制。從根源上解決了主備延遲問題,將延遲控制在了毫秒級別。
底層存儲采用TXStore多副本存儲的方式,備份采用快照方式秒級備份,直接避免了備份加鎖導致的主備延遲和性能影響。
尋人啟事
由于篇幅有限,有些實現細節(jié)并沒有詳細地闡述,如果大家對具體的實現感興趣,可以關注我們的微信公眾號“騰訊數據庫技術”,我們會定期推送和分享數據庫領域專業(yè)知識、線上經驗沉淀,與大家共同成長。另外如果大家有數據庫技術相關的問題或新的功能需求,歡迎給我留言或在碼客中提問,我們會努力地為大家答疑。
公眾號:騰訊數據庫技術
最后打個廣告,數據庫是一個很有吸引力的領域,在這里你可以管理數十萬的數據庫實例,做極致的高可用和彈性伸縮,可以重新定義新一代的數據庫代理服務,可以用AI實現數據庫參數調優(yōu)、SQL調優(yōu)等 AI4DB 的自治數據庫。如果你對數據庫有著濃厚的興趣、對數據庫的原理比較清楚、又有著比較好的 C 或 C++ 的基礎,最重要的,你有挑戰(zhàn)各種困難的勇氣與強烈的責任感,那么你就是我們要找的人,沒有專業(yè)限制、沒有條條框框,我們將會一起努力,見證 數據庫 在云上的魅力!
簡歷請投遞至 baohuawang@tencent.com ,我們期待您的加入!
總結
以上是生活随笔為你收集整理的腾讯关系型数据库达成“双百”里程碑——6大企业级MySQL特性全面解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信AI从识物到通用图像搜索的探索揭秘
- 下一篇: 腾讯云数据库2020年度盛典等你来