GaussDB技術解讀丨資料庫遷移創新實踐

来源:https://www.cnblogs.com/huaweiyun/archive/2023/09/07/17684775.html
-Advertisement-
Play Games

GaussDB的遷移場景越來越多,也越來越複雜,所以我們會不斷地進行探索和創新,讓我們的方案更完善,遷移過程更平滑。 ...


本文分享自華為雲社區《DTCC 2023專家解讀丨GaussDB技術解讀系列之資料庫遷移創新實踐》,作者:GaussDB 資料庫。

近日,以“數智賦能 共築未來”為主題的第14屆中國資料庫技術大會(DTCC 2023)在北京舉行,在GaussDB“五高兩易”核心技術,給世界一個更優選擇的專場,華為雲資料庫生態工具研發總監竇德明分享了GaussDB資料庫的遷移創新實踐。

cke_171.jpeg

以下是演講實錄:

各位同仁,我是華為雲資料庫生態工具研發總監竇德明,我分享的是GaussDB資料庫遷移的創新實踐。

易遷移能力是企業資料庫替換選型的關鍵考量

資料庫的選型除了要看資料庫本身的能力外,能否很平滑地從其他資料庫遷移到GaussDB,也是很多企業考量的關鍵因素。而資料庫能否平滑遷移有兩個非常核心的要素,一個是資料庫本身,比如能否很好地相容主流資料庫的語法,讓應用少改或者不改;另外一個是在資料庫外圍能否提供一些好用、易用的遷移工具,把應用中內嵌的SQL、資料庫中的對象以及全量和增量數據,在業務近乎零停機的情況下從其他資料庫平滑地遷移過來。這兩點是企業做資料庫選型時考量的兩個遷移關鍵要素。

結構(UGO)+ 數據(DRS)一站式遷移解決方案

在2021年的DTCC大會上,我們發佈了華為雲結構+數據一站式遷移解決方案,其中有兩個核心工具。一個工具是UGO,主要做結構和應用的語法相容性評估和轉換,比如將資料庫上層應用中內嵌的SQL捕獲出來進行評估,對資料庫內部對象的DDL進行評估,並輸出一個報告,清晰地展示哪些是資料庫本身相容的、哪些是通過UGO轉換可以相容的、哪些不能轉換需要人工介入進行改造等。另外一個工具是DRS,大家都知道,異構資料庫替換過程中的數據遷移問題非常非常多,DRS要解決的就是怎麼在業務近乎不停機的情況下快速把客戶的存量數據和增量數據遷移過來,並保證數據在任何情況下不丟、不錯、不亂,同時提供靈活、多樣的數據比對和修複能力。

UGO+DRS一體化解決方案在實際項目中得到驗證

UGO+DRS一站式遷移解決方案近兩年在很多項目中都得到了驗證和應用,這裡舉幾個實際的例子。第一個是我們公司自己內部的MetaERP項目,使用UGO自動轉換了近7億行的O資料庫SQL腳本,轉換成功率接近100%,同時GaussDB實現了並行邏輯解碼,性能高達近300MB/秒,可以讓DRS輕鬆應對MetaERP在月結、季結和年結時10~20倍的流量洪峰,保證數據同步<5s的低時延。

第二個是某銀行的資料庫替換,這個項目遷移複雜度比較高,面臨應用多、資料庫對象多、存儲過程和package深度依賴等困難,截至目前通過我們的一站式遷移解決方案,完成了近1.3億行SQL腳本(包含近8000萬存儲過程)的UGO自動轉換,轉換成功率超過96%,採用DRS遷移了近300套左右的O資料庫實例,實現了O資料庫與GaussDB資料庫的長時間並機穩定運行,正反向低時延數據同步。

項目實施過程中遇到新的困難與挑戰

在大量的項目實施過程中,我們UGO+DRS一站式遷移解決方案也遇到了一些新的困難和挑戰,這些挑戰相信大家也都會遇到,在此給大家做個分享。

挑戰1:在做異構資料庫替換時,如何快速識別異構資料庫語法不相容點,識別數據相同的情況下相同SQL在不同資料庫中執行的性能差異,以及低版本向高版本升級時是否會存在不相容或性能劣化,再有就是如何模擬業務流量洪峰時的資料庫行為表現。

挑戰2:當前很多企業的開發人員和DBA對GaussDB熟悉程度還不高,SQL編寫水平參差不齊,而且在做應用開發時缺乏統一的SQL編程規範和有效的SQL審核機制,很多爛SQL都流入了生產環境,進而引發大量的應用性能問題,影響生產業務和客戶體驗。

挑戰3:很多資料庫當前的字元集在標準字元集的基礎上做了很多擴展或者定製,導致數據遷移時相同字元集的不相容,或者就沒有對等的字元集,更有甚者,歷史數據里已經存在了各種各樣的亂碼數據,這些特殊場景都會影響遷移的平滑性。

當然,困難和挑戰還有很多,但這三個是會阻塞或拖慢資料庫遷移進程的,那麼針對這三個挑戰,我們都做了哪些探索和創新呢?再給大家分享一下。

應對挑戰1:孵化資料庫流量錄製與回放能力

流量錄製與回放的概念相信大家都不陌生,在資料庫領域,有些資料庫廠商也提供了相應的工具,GaussDB面臨的業務場景比較多,所以需要的技術也因場景而異。如果源資料庫是公有雲服務,而且提供了全量SQL,那麼直接獲取全量SQL併進行回放即可;如果源資料庫開啟了審計日誌,也可以直接下載並解析審計日誌,當然開啟審計日誌會對資料庫的性能有一定的影響;如果源端是自建資料庫,而且未開啟審計日誌,那就需要部署一個agent,通過捕獲網路數據包,結合資料庫本身的通信協議來解析出應用下發的所有SQL。基本上這三種方案可以涵蓋所有的場景,這裡面還要註意幾個點,首先是要研究透不同資料庫的通信協議,其次是實現異構資料庫替換場景下的SQL自動轉換,另外是要具備SQL回放的流量控制能力,能加速或者放慢等,當然在解析、回放等出現異常的情況下,要做好記錄。

cke_172.png

接下來就是在源資料庫的鏡像庫和GaussDB資料庫同時進行流量回放,而且保證鏡像庫和目標資料庫的數據完全一致,回放的SQL也完全一樣,最終輸出一個分析報告,比對每一條SQL的執行耗時、資源消耗、甚至是執行結果,很容易看出來哪些SQL的性能GaussDB比源資料庫好、哪些出現了劣化、哪些是基本持平的。

我們正在和某銀行進行資料庫流量錄製與回放的聯合創新,從實際應用效果來看,通過agent方式捕獲流量包,SQL抓取成功率可以做到97%以上,解析成功率和回放成功率可以達到95%,在此過程中,還可以識別到語法不相容、語義不相容的異常情況。

應對挑戰2:孵化GaussDB資料庫SQL審核能力

SQL審核大家更為熟悉,很多大的企業都會進行探索和實踐,但對於GaussDB來說,由於是純自主創新的分散式資料庫,很多企業的開發人員和DBA還不熟悉GaussDB的SQL語法,也沒有制定較為完善的SQL編程規範,很多第三方SQL審核工具也沒有針對GaussDB的審核能力,這種情況下,我們結合UGO成熟的SQL解析器,以及多個項目中的SQL調優實踐,孵化出了GaussDB資料庫的SQL審核能力。

cke_173.png

我們SQL審核的輸入可以有多種類型,可以是代碼倉,也可以是一個SQL文件,還可以是通過流量錄製獲取的動態SQL等等,可以審核直接獲取到的原生SQL,也可以審核通過UGO轉換後的SQL。

截至目前,我們已經沉澱了81條審核規則,併在公司內部的兩個項目以及外部的多個銀行進行了應用,效果超出預期。

應對挑戰3:孵化字元集相容性分析評估能力

針對數據遷移,大家最擔心的莫過於正式割接時出現各種各樣的問題導致割接失敗,除了遷移工具本身的功能之外,最常見的可能就是字元集不相容、數據亂碼、生僻字等等。舉個例子,O資料庫對GBK字元集做了擴充,可以存儲UTF-8字元,而GaussDB資料庫的GBK字元集非常規範,從O資料庫向GaussDB遷移數據時,這些UTF-8字元根本無法寫入,遷移必然失敗。更有甚者,很多客戶的海量歷史數據中有大量的亂碼數據,無法確定這些數據是什麼時候寫入的,哪些應用寫入的,或者後續會不會再用到,但客戶要求必須遷移過來。那麼,面對這些挑戰,我們嘗試通過孵化字元集相容性分析評估工具來提前識別。

cke_174.png

這個工具的原理很簡單,首先是建立一個可以分析的字元集基線,比如GB系、Unicode系列等,其次是獲取源資料庫的元數據,包括字元集、索引信息、表結構信息(列類型、列長度)等,然後基於源資料庫和目標資料庫的字元集做好映射,最後再對資料庫進行數據掃描和分析,輸出多維度的分析評估報告。目前這個工具正在和某銀行進行聯創,從前期的試用效果來看,確實能發現很多問題,比如ZHS16GBK和AL32UTF8兩種字元集混編、直接寫入二進位格式導致數據亂碼、ZHS16GBK字元集使用了大量生僻字等。

對UGO+DRS一站式遷移方案的演進思考

以上是我們在使用UGO+DRS一站式遷移解決方案過程中遇到的三個大的挑戰,以及應對這三個挑戰做的一些創新實踐。現在GaussDB的遷移場景越來越多,也越來越複雜,所以我們會不斷地進行探索和創新,讓我們的方案更完善,遷移過程更平滑,比如流量回放、SQL審核、字元集相容性評估會支持更多的資料庫,推出非常詳細和全面的應用、結構、數據遷移可行性分析報告,實現SQL捕獲、轉換、審核、優化全流程一體化管理等等,也希望能和客戶、伙伴以及各位同行進行合作。

以上就是我分享的GaussDB資料庫在遷移方面的一些創新實踐,謝謝大家。

號外!

cke_12411.jpeg

華為將於2023年9月20-22日,在上海世博展覽館和上海世博中心舉辦第八屆華為全聯接大會(HUAWEICONNECT 2023)。本次大會以“加速行業智能化”為主題,邀請思想領袖、商業精英、技術專家、合作伙伴、開發者等業界同仁,從商業、產業、生態等方面探討如何加速行業智能化。

我們誠邀您蒞臨現場,分享智能化的機遇和挑戰,共商智能化的關鍵舉措,體驗智能化技術的創新和應用。您可以:

  • 在100+場主題演講、峰會、論壇中,碰撞加速行業智能化的觀點
  • 參觀17000平米展區,近距離感受智能化技術在行業中的創新和應用
  • 與技術專家面對面交流,瞭解最新的解決方案、開發工具並動手實踐
  • 與客戶和伙伴共尋商機

感謝您一如既往的支持和信賴,我們熱忱期待與您在上海見面。

大會官網:https://www.huawei.com/cn/events/huaweiconnect

歡迎關註“華為雲開發者聯盟”公眾號,獲取大會議程、精彩活動和前沿乾貨。

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # Unity UGUI的ScrollRect(滾動視圖)組件的介紹及使用 ## 1. 什麼是ScrollRect組件? ScrollRect(滾動視圖)是Unity UGUI中的一個常用組件,用於在UI界面中創建可滾動的區域。通過ScrollRect組件,可以實現在有限的空間內顯示大量的內容,並且 ...
  • [toc] | 說明 | 內容 | | | | | 漏洞編號 | CVE-2017-10271 | | 漏洞名稱 | Weblogic 其中使用了XMLDecoder來解析用戶傳入的XML數據在解析的過程中出現反序列化漏洞,導致可執行任意命令 | | 修複方案 | 打補丁上設備升級組件 | ### ...
  • 博主之前發佈了紅帽體系的Centos7關於openssl和openssh的升級操作;本文就Ubuntu系統再次分享和交流ssh的升級。如有不正確,歡迎在評論區指出。 之前博主的相關文章: openssh-淺談openssl和openssh的升級 - 李宗盛 - 博客園 (cnblogs.com) o ...
  • 對於有科班背景的讀者,可以跳過本系列文章。這些文章的主要目的是通過簡單易懂的彙總,幫助非科班出身的讀者理解底層知識,進一步瞭解為什麼在面試中會涉及這些底層問題。否則,某些概念將始終無法理解。這些電腦基礎文章將為你打通知識的任督二脈,祝你在編程領域中取得成功! ...
  • 1. 進程和線程的區別 進程(Process)和線程(Thread)是操作系統中的重要概念,它們表示執行中的程式的不同執行單元。下麵是它們的區別: 定義:進程是一個獨立的執行環境,具有獨立的記憶體空間,包含程式代碼、數據和執行狀態。線程是進程內的一個執行單元,共用相同的記憶體空間和系統資源。 資源占用: ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202309/3076680-20230907165115014-2093238023.png) # 1. 從軟體本身和它運行的典型工作負載來看,MySQL通常也更適合運行在廉價硬體上 # 2. 基本資源 ## ...
  • 編輯my.ini或者my.cnf文件 #### 清空binlog信息 ```sql #查看現存的binlog文件列表 show master logs; #重置清空binlog文件 reset master; #重置清空後 重新查看現存的binlog文件列表 是否都被清空了 show master ...
  • 本文分享自華為雲社區《GaussDB AP是如何執行SQL的》,作者:yd_270088468。 前言 介紹GaussDB AP各組件是如何協調工作的,會著重介紹SQL引擎。 1、SQL引擎組件和SQL生命周期 Parser: 詞法/語法分析模塊。詞法分析會從SQL字元串中解析出一個個單詞,作為語法 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...