伴隨信創產業的蓬勃發展,數據庫的替代升級對數據庫內核技術、功能迭代、服務支撐都提出了更高的要求和更復雜的挑戰。這其中,金融行業對數據庫產品的要求尤為嚴苛,應用實踐場景也尤其具有代表性。
2023年4月7-8日,由中國DBA聯盟(ACDU)和墨天輪社區聯合主辦的第十二屆“數據技術嘉年華”(DTC 2023)在北京新云南皇冠假日酒店成功舉辦,中國民生銀行資深數據庫專家孔再華受邀出席了「金融行業實踐」專題論壇,并發表了《openGauss在民生銀行的應用實踐》的主題演講??自偃A就民生銀行對數據庫選型替代的思考與設計,以及在openGauss上的具體應用實踐,和現場近兩百位數據技術及金融科技從業者、參會嘉賓做了深入交流。以下內容根據孔再華的演講實錄整理而成。
01 openGauss在民生銀行的應用架構實踐
當一個新的數據庫產品到了銀行之后,首先要思考的就是高可用怎么做。我們在測試一款數據庫的時候可能主要關注其功能和性能,但真正部署的時候最需要的往往是穩定性。關于高可用,民生銀行早期在使用openGauss的時候,分布式的高可用組件工具CM尚未開源,基于民生銀行一直以來在高可用方面的需求,結合了原有商業數據庫及其配套的高可用軟件和方案,以及后續接入的MySQL數據庫及其主從方案,與云和恩墨通力合作,在經歷了很長一段時間的積累后,通過持續的功能設計和優化完善,最終形成了本地化的高可用方案。
孔再華介紹到,在雙機的高可用方案里,有6個關鍵的設計點:本地進程守護、主庫丟失切換、文件系統檢測、雙主檢測自殺、主庫孤單自殺、從庫丟失檢測。整個高可用方案基于比較成熟的、不斷的經驗積累而形成。
關于部署的形態,孔再華首先介紹了一主一從的虛擬機方案。在這個方案里,虛擬機高可用漂移,主從不切換;同時,加入HA守護數據庫進程,實現故障后自動拉起,即某一虛擬機出現故障后,仍能保障數據的一致性。
另一個方案是物理機方案。和虛擬機方案類似,同樣是同城雙中心,物理機方案采用FIRST設置,可實現本地同城數據同步、本地HA激活故障切換,在同城HA非激活狀態下,也可人工干預同城切換。
除了同城雙中心的保護之外,民生銀行在openGauss應用實踐中還設計了常見的兩地三中心容災方案。該方案采用一主一從的架構,在異地的機房里設置同等比例的服務器,通過使用openGauss主從復制的能力,以及一些可定制化的配置設計而成,可實現異地數據異步傳輸、異地級聯復制、異地演練、異地切換。
在容災方案的基礎上進一步延伸,民生銀行在openGauss的使用中還設計了逃生庫方案,解決了人為操作或者其他原因導致數據丟失時如何找回的問題。逃生庫獨立于OM集群管控之外,支持延時回放、迅速恢復到目標時間點,緊急情況下具備可擴容承載業務的服務功能。
逃生庫方案中還包含了Kubernetes云原生方案的設計。云原生方案是民生銀行開發出來的operator,作為民生銀行測試環境主推的方案,采用多中心集群部署形態,可實現從部署到擴容、回收、集群監控、集群高可用等全生命周期管理,同時支持多網絡插件、多存儲插件、可維護狀態設定和故障自愈。
02 民生銀行與社區協同優化openGauss產品功能
民生銀行在openGauss的使用過程中,非常大的一個變化是客戶端自適應能力??自偃A提到,我們不再采用傳統的VIP模式,而是配置所有主從的IP列表(通過DNS配置主機名指向物理IP),利用客戶端的自動辨識功能連接主庫,這是民生銀行使用其他數據庫所不具備的。在此之前,openGauss的JDBC客戶端支持多IP配置,支持讀寫分離;ODBC客戶端支持多IP配置,但不支持讀寫分離,只能通過transaction_read_only屬性區分是否為主庫;Libpq支持多IP配置,不支持讀寫分離;甚至連Python驅動和Go驅動也不具備這樣的自適應能力。在民生銀行的積極推動及openGauss社區的共同努力下,客戶端的自適應能力得到了顯著改變和快速成長。
在本地提交問題上,民生銀行協同openGauss社區也做了進一步的功能優化。原先主從復制后,很容易出現主從日志分叉,進而導致主從數據不一致,在openGauss使用初期,確實因這個問題產生過不少困擾。最終的優化方案中,決定在本地提交的數據中加入同步點,除了日志之外,數據庫在發送日志過程中,寫下了從庫回來某一個同步點的信息即日志的位置。日志的位置在之前說明已經提交給從庫是一致性的點,如果臨時點之后本地日志還有從庫沒有收到的local commit數據,就不能做Build。如果發現數據不一致,就需要用一些日志的工具去把兩個分叉的日志點往后的數據全部弄出來,看到數據的差異。
行存壓縮能力是民生銀行早期向openGauss社區開發提出的需求之一。經過過去兩三年的功能優化,openGauss的行存壓縮能力已經有了顯著增強,壓縮之后不僅空間、容量使用上會很少,性能上也有一定的增強改進。在測試環境中,無論是表還是索引,整體壓縮率都較高,在真實的生產環境中也能壓縮到三分之一左右。
03 對openGauss產品的需求與期望
演講尾聲,談到對openGauss產品的需求和期望,孔再華提到兩點——穩定和易用。他認為,任何產品新功能的使用,穩定都是第一位,確保新功能不對老功能產生侵害,確保它穩定、安全之后再交付給用戶使用。隨著民生銀行使用openGauss的時間增長,這種感受和需求也日益加深。其次是易用。“開發并優化客戶真正需要的功能,最大程度確保穩定和易用,相信是廣大openGauss用戶和社區持續共同的目標和追求。”孔再華講道。
當前,中國數據庫的發展正可謂百花齊放、如火如荼,以民生銀行為代表的金融行業應用實踐就是鮮活有力的說明。在千行百業的數字化轉型升級需求下,相信以openGauss為代表的中國數據庫定將不負時代使命,持續優化創新,共同加速數字化發展、推進數字中國建設。