自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)者必看!你想知道的遷移之道都在這里了

開發(fā) 前端
數(shù)據(jù)庫遷移的目的是為了業(yè)務(wù)遷移,而業(yè)務(wù)能否順利切換取決于數(shù)據(jù)庫的遷移能力和遷移后的準(zhǔn)確性,站在業(yè)務(wù)側(cè)的角度,至少要滿足以下三個(gè)正確性才能夠去做業(yè)務(wù)的切換。

 [[408908]]

1.背景介紹

隨著GaussDB(for openGauss)數(shù)據(jù)庫的不斷發(fā)展,越來越多的客戶開始選擇使用GaussDB(for openGauss),其中很大一部分客戶是將現(xiàn)有的系統(tǒng)替換到GaussDB(for openGauss)上,客戶當(dāng)前所用的數(shù)據(jù)庫類型多種多樣,如Oracle、MySQL、PostgreSQL等。那么如何解決將客戶當(dāng)前數(shù)據(jù)庫遷移到GaussDB(for openGauss)上是一個(gè)很迫切的需求。GaussDB(for openGauss)自帶的GDS數(shù)據(jù)遷移工具實(shí)現(xiàn)了GaussDB(for openGauss)之間的高效數(shù)據(jù)遷移,但是無法解決異構(gòu)同步和實(shí)時(shí)同步的場景。華為云數(shù)據(jù)庫遷移工具DRS以一種易用、穩(wěn)定、高效的云服務(wù)為GaussDB(for openGauss)提供了異構(gòu)遷移和實(shí)時(shí)同步的能力,助力客戶輕松將數(shù)據(jù)庫遷移到GaussDB(for openGauss)。

2.數(shù)據(jù)庫遷移整體解決方案

數(shù)據(jù)庫遷移的目的是為了業(yè)務(wù)遷移,而業(yè)務(wù)能否順利切換取決于數(shù)據(jù)庫的遷移能力和遷移后的準(zhǔn)確性,站在業(yè)務(wù)側(cè)的角度,至少要滿足以下三個(gè)正確性才能夠去做業(yè)務(wù)的切換。

  • 對(duì)象遷移是正確的

數(shù)據(jù)庫的存儲(chǔ)過程、函數(shù)、觸發(fā)器、表結(jié)構(gòu)、索引等全部數(shù)據(jù)庫對(duì)象能夠完整的遷移到目標(biāo)庫,并且能夠保證對(duì)象的運(yùn)行邏輯和源庫是一致的。

  • 數(shù)據(jù)遷移是正確的

將源庫的全量數(shù)據(jù)遷移到目標(biāo)庫,當(dāng)業(yè)務(wù)對(duì)停機(jī)時(shí)間窗口有要求的時(shí)候,要考慮全量+增量的在線遷移,保證業(yè)務(wù)不中斷。同時(shí)要能夠?qū)ν降臄?shù)據(jù)進(jìn)行校驗(yàn),保證遷移數(shù)據(jù)的準(zhǔn)確性。

  • 遷移后業(yè)務(wù)運(yùn)行是正確的

當(dāng)對(duì)象和數(shù)據(jù)都遷移到目標(biāo)庫后,業(yè)務(wù)的切換還存在兩個(gè)風(fēng)險(xiǎn)點(diǎn),一個(gè)是業(yè)務(wù)在目標(biāo)庫的運(yùn)行結(jié)果是否正確,另一個(gè)是目標(biāo)庫性能能否和源庫一樣支撐住業(yè)務(wù)的負(fù)載。因?yàn)楫悩?gòu)數(shù)據(jù)庫之間的差異還是很大的,設(shè)計(jì)理念和實(shí)現(xiàn)方式存在很多不同,會(huì)導(dǎo)致看上去類似的兩個(gè)對(duì)象,其運(yùn)行結(jié)果或效率是完全不同的。所以要有工具來驗(yàn)證這種差異,保證遷移后業(yè)務(wù)運(yùn)行的正確性。

為了實(shí)現(xiàn)以上業(yè)務(wù)切換需要滿足的條件,華為云提供了數(shù)據(jù)庫遷移的整體解決方案,通過語法遷移(UGO),DRS-數(shù)據(jù)遷移,DRS-數(shù)據(jù)校驗(yàn)和DRS-流量回放4個(gè)工具產(chǎn)品形成了整個(gè)遷移過程的閉環(huán)。

  • 語法遷移(UGO)

實(shí)現(xiàn)了將oracle數(shù)據(jù)庫對(duì)象遷移到GaussDB(for openGauss)的能力,可以給出完整的遷移評(píng)估報(bào)告,哪些對(duì)象可以完全兼容的進(jìn)行遷移,哪些對(duì)象需要進(jìn)行轉(zhuǎn)換進(jìn)行遷移,哪些對(duì)象需要業(yè)務(wù)配合改造。

  • DRS-數(shù)據(jù)遷移

實(shí)現(xiàn)將Oracle、MySQL、PostgreSQL等數(shù)據(jù)庫數(shù)據(jù)實(shí)時(shí)遷移到GaussDB(for openGauss)的能力。

  • DRS-數(shù)據(jù)校驗(yàn)

實(shí)現(xiàn)了對(duì)數(shù)據(jù)遷移后的一致性校驗(yàn),具備行級(jí)比對(duì)、內(nèi)容級(jí)比對(duì)和實(shí)時(shí)的增量數(shù)據(jù)比對(duì)的能力。

  • DRS-流量回放

實(shí)現(xiàn)對(duì)Oracle數(shù)據(jù)庫的業(yè)務(wù)流量抓取,并對(duì)流量SQL進(jìn)行轉(zhuǎn)換,然后在GaussDB(for openGauss)進(jìn)行回放的能力。

3.DRS數(shù)據(jù)遷移上云

DRS提供了簡單、易用的操作界面,采用流程化的配置方式,客戶按照提示步驟一步一步操作便可以搭建出同步鏈路。DRS除了支持Oracle到GaussDB(for openGauss)的數(shù)據(jù)遷移外,還支持其他數(shù)據(jù)庫之間的數(shù)據(jù)同步,下面給出了當(dāng)前DRS所支持的源庫和目標(biāo)庫類型的列表。

在數(shù)據(jù)遷移過程中,DRS采用很多手段和技術(shù)去降低可能存在的風(fēng)險(xiǎn),保證遷移過程的穩(wěn)定和最終數(shù)據(jù)的一致性。

  • 在線遷移

DRS通過全量遷移將客戶數(shù)據(jù)庫中的存量數(shù)據(jù)遷移到GaussDB(for openGauss)中,通過增量同步,實(shí)時(shí)解析源庫日志,將客戶的實(shí)時(shí)變化數(shù)據(jù)同步到Gauss(for openGauss),通過全量和增量的無縫銜接來保證客戶在不中斷業(yè)務(wù)的情況下,完整地將全部數(shù)據(jù)遷移到GaussDB(for openGauss)。

  • 預(yù)校驗(yàn)

在DRS的遷移任務(wù)啟動(dòng)之前,為提早發(fā)現(xiàn)遷移啟動(dòng)后可能存在的風(fēng)險(xiǎn)或錯(cuò)誤,DRS引入預(yù)校驗(yàn)環(huán)節(jié),能夠提前對(duì)配置信息、數(shù)據(jù)庫兼容性信息、連通性信息等進(jìn)行校驗(yàn),同時(shí)會(huì)對(duì)一些可以遷移成功但可能會(huì)對(duì)業(yè)務(wù)產(chǎn)生影響的情況進(jìn)行告警,讓客戶及時(shí)發(fā)現(xiàn)并提前處理。

  • 斷點(diǎn)機(jī)制

為保證數(shù)據(jù)遷移的一致性,DRS在每個(gè)組件中都設(shè)有斷點(diǎn)機(jī)制,無論是在正常啟停、異常重啟還是在故障切換的場景下都可以保證數(shù)據(jù)同步的準(zhǔn)確性,不會(huì)造成數(shù)據(jù)丟失。

4.DRS技術(shù)實(shí)現(xiàn)原理

DRS在技術(shù)實(shí)現(xiàn)上主要分為兩個(gè)大的模塊,一個(gè)是全量的數(shù)據(jù)同步,另一個(gè)是增量數(shù)據(jù)同步。全量同步解決對(duì)靜態(tài)數(shù)據(jù)的遷移,增量同步解決對(duì)實(shí)時(shí)的變化數(shù)據(jù)遷移。

全量同步的技術(shù)架構(gòu)

全量同步的整體邏輯比較簡單,就是從源庫把數(shù)據(jù)通過select的方式查詢出來,然后再將這些數(shù)據(jù)寫入到目標(biāo)庫,只是在具體的代碼實(shí)現(xiàn)上會(huì)有一些關(guān)鍵技術(shù)點(diǎn)。

  • 數(shù)據(jù)分片

一般全量同步產(chǎn)品的同步粒度都可以達(dá)到表級(jí)別的并發(fā),即多個(gè)線程可以同時(shí)對(duì)多張表同時(shí)進(jìn)行同步,但往往客戶的系統(tǒng)中會(huì)存在單表數(shù)據(jù)量特別大的情況,比如一張表幾十億甚至上百億的數(shù)據(jù),此時(shí)這張表的同步時(shí)間就變?yōu)檎麄€(gè)全量同步的時(shí)間。那么如何進(jìn)一步提升單張表的同步效率呢?我們可以對(duì)單表做進(jìn)一步的拆分,按照主鍵去把它拆分成多個(gè)分片,多線程以分片為單位做并行的同步。

當(dāng)前DRS按照下面的策略對(duì)表進(jìn)行分片:

    • 無主鍵表不進(jìn)行分片
    • 分區(qū)表按分區(qū)進(jìn)行同步,不再對(duì)每個(gè)分區(qū)進(jìn)行分片
    • 有主鍵表按主鍵(第一列)進(jìn)行分片
  • 數(shù)據(jù)不落盤

為減少全量同步過程中對(duì)磁盤的占用,DRS導(dǎo)出的數(shù)據(jù)不進(jìn)行落盤緩存,而是直接通過內(nèi)存?zhèn)鬟f給導(dǎo)入線程,在導(dǎo)出和導(dǎo)入速率相當(dāng)?shù)那闆r下,可以最大化的提高全量同步的效率。

  • 斷點(diǎn)控制

全量同步半途中斷是一個(gè)非常讓人棘手的問題,可能一張2億條數(shù)據(jù)的表,在同步到1.8億的時(shí)候因?yàn)榫W(wǎng)絡(luò)或源庫快照過舊的問題導(dǎo)致同步失敗,如果沒有好的斷點(diǎn)控制機(jī)制,那可能之前的付出都白白浪費(fèi),還要重新再次同步一次。DRS通過以分片為單位做為斷點(diǎn)的保存記錄,對(duì)于上面的例子,即使同步中斷,也可以再次被拉起,而且拉起后,已經(jīng)同步成功的分片將不再同步,還沒有同步的分片則會(huì)繼續(xù)同步。

  • 流量控制

客戶的業(yè)務(wù)往往是存在高峰期和低峰期,高峰期時(shí),數(shù)據(jù)庫的資源占用是最高的,我們要盡量避開在業(yè)務(wù)高峰期做全量的同步,因?yàn)槿客綄?duì)源庫的cpu、內(nèi)存和網(wǎng)絡(luò)資源占用是很大的。DRS采用流量控制的機(jī)制來減少業(yè)務(wù)高峰期對(duì)源庫的資源占用,主要是通過控制網(wǎng)絡(luò)流量的方式,客戶可以設(shè)置要進(jìn)行流量控制的時(shí)間段,DRS在全量同步過程中,會(huì)實(shí)時(shí)計(jì)算同步的流量大小,運(yùn)行到該時(shí)段后,當(dāng)流量超過設(shè)置的閾值,會(huì)放緩數(shù)據(jù)獲取的速度。運(yùn)行過該時(shí)段后,便恢復(fù)全部的數(shù)據(jù)同步速度。

  • 全量+增量的無縫銜接

在業(yè)務(wù)切庫的場景中,數(shù)據(jù)的遷移過程一般可以選擇兩種方案,一種是一次性將源庫的數(shù)據(jù)遷移到目標(biāo)庫,但是需要業(yè)務(wù)停機(jī)窗口,這個(gè)窗口的大小取決于全量數(shù)據(jù)遷移的時(shí)間。當(dāng)數(shù)據(jù)量較大時(shí),整個(gè)遷移過程可能需要幾天的時(shí)間,這種業(yè)務(wù)停機(jī)是無法接受的。所以另一種方案就是業(yè)務(wù)不中斷的數(shù)據(jù)遷移方案,它的實(shí)現(xiàn)原理就是基于全量遷移和增量同步的無縫銜接,對(duì)于Oracle->GaussDB(for openGauss)的遷移,Oracle數(shù)據(jù)庫提供了指定scn進(jìn)行快照導(dǎo)出的功能,基于這個(gè)特性,DRS在做全量同步時(shí),指定scn進(jìn)行導(dǎo)出,這樣整個(gè)全量同步的數(shù)據(jù)就是此scn點(diǎn)前的快照數(shù)據(jù),然后增量同步以這個(gè)scn點(diǎn)作為同步的分界點(diǎn),只有大于這個(gè)scn的增量事務(wù)才會(huì)被同步到目標(biāo)庫。這樣就實(shí)現(xiàn)了全量和增量的無縫銜接,同步過程無需業(yè)務(wù)進(jìn)行停機(jī),當(dāng)全量數(shù)據(jù)同步完成且增量同步追趕到當(dāng)前時(shí)間點(diǎn)時(shí),便可進(jìn)行業(yè)務(wù)切換,業(yè)務(wù)中斷窗口可以控制在秒級(jí)。

增量同步的技術(shù)架構(gòu)

DRS的增量同步架構(gòu)主要分為3個(gè)部分,分別是數(shù)據(jù)抓取、落盤文件和數(shù)據(jù)回放。

  • 數(shù)據(jù)抓取

數(shù)據(jù)抓取通過對(duì)源庫日志的解析,實(shí)時(shí)獲取源庫的變化數(shù)據(jù),在內(nèi)部實(shí)現(xiàn)上主要包括日志拉取、日志解析、事務(wù)整合和數(shù)據(jù)落盤幾個(gè)步驟。

    • 日志拉取

DRS采用Oracle的Logminer接口獲取實(shí)時(shí)的redo日志,當(dāng)redo歸檔后,DRS會(huì)讀取歸檔日志文件。為了防止源庫的歸檔日志被不確定性刪除,DRS會(huì)啟動(dòng)日志拉取的線程(可以多線程并發(fā))把日志拉取到本地,然后進(jìn)行后續(xù)的解析。

    • 日志解析

Oracle Logminer接口獲取到的數(shù)據(jù)需要進(jìn)一步解析才能獲取到實(shí)際的變化內(nèi)容,DRS的日志解析線程對(duì)返回的數(shù)據(jù)進(jìn)行過濾、拼接、元數(shù)據(jù)映射、轉(zhuǎn)換等操作形成一條完整的變更記錄對(duì)象。

    • 事務(wù)整合

日志解析是按照源庫變化數(shù)據(jù)的順序進(jìn)行解析,解析后的每條記錄的事務(wù)是交叉混合在一起的,必須對(duì)每條記錄按照事務(wù)id進(jìn)行整合才能形成一個(gè)完整的事務(wù)。另一方面對(duì)于Oracle RAC的場景,還需要對(duì)不同節(jié)點(diǎn)的事務(wù)進(jìn)行排序,避免事務(wù)亂序的情況發(fā)生。

  • 落盤文件

經(jīng)過了事務(wù)整合后,形成了一個(gè)按照源庫業(yè)務(wù)提交順序的序列,DRS會(huì)按照這個(gè)順序把這些數(shù)據(jù)寫入到磁盤文件。落盤的數(shù)據(jù)包含了源庫每一條變化數(shù)據(jù)的全部信息,包含表信息、列信息、事務(wù)信息、數(shù)據(jù)信息和其他額外信息(如時(shí)間戳、rowid等),根據(jù)這些信息后面的組件便可以把每一條變化數(shù)據(jù)還原成對(duì)象的SQL。

  • 數(shù)據(jù)回放

數(shù)據(jù)回放就是將數(shù)據(jù)抓取到的數(shù)據(jù)在目標(biāo)庫進(jìn)行執(zhí)行的過程,但它和數(shù)據(jù)的抓取是解耦的。它讀取DRS的落盤文件,解析出每條變化的數(shù)據(jù),根據(jù)文件中記錄的元數(shù)據(jù)信息重構(gòu)出對(duì)應(yīng)的SQL語句,在目標(biāo)庫執(zhí)行。

在數(shù)據(jù)回放之前,DRS提供了過濾和轉(zhuǎn)換的功能,可以對(duì)同步的數(shù)據(jù)進(jìn)行過濾,可配置過濾條件,如只同步id < 10000的數(shù)據(jù),也可以對(duì)同步數(shù)據(jù)的表名、schema名或列名進(jìn)行映射等。

異常處理和回放性能是兩個(gè)重要的考量點(diǎn),DRS通過配置數(shù)據(jù)沖突策略來處理回放中的異常數(shù)據(jù),通過并發(fā)機(jī)制來提高裝載的性能。

    • 沖突策略

所謂的沖突是指在數(shù)據(jù)回放的時(shí)候出現(xiàn)了數(shù)據(jù)類報(bào)錯(cuò)(如主鍵沖突、update和delete無法找到記錄等),這些報(bào)錯(cuò)一版都是由于兩邊的數(shù)據(jù)不一致造成的。DRS對(duì)這類錯(cuò)誤采用了三種處理策略,分別是覆蓋、忽略和等待。

覆蓋:當(dāng)出現(xiàn)沖突時(shí),用抓取到的數(shù)據(jù)覆蓋掉目標(biāo)庫的數(shù)據(jù)

忽略:數(shù)據(jù)沖突后,直接跳過錯(cuò)誤記錄,繼續(xù)執(zhí)行

等待:數(shù)據(jù)沖突后,等待人工處理

    • 并發(fā)機(jī)制

DRS的并發(fā)機(jī)制采用記錄級(jí)別的并發(fā),最大化的提升數(shù)據(jù)裝載的性能。

首先從DRS的落盤文件中讀取增量數(shù)據(jù),按順序放入一個(gè)隊(duì)列中,并行分析引擎會(huì)從隊(duì)列中獲取每一條數(shù)據(jù),并根據(jù)其主鍵信息判斷是否存在數(shù)據(jù)沖突,對(duì)于沒有沖突的數(shù)據(jù)說明可以并行去執(zhí)行,則把這些數(shù)據(jù)分散到多個(gè)線程隊(duì)列中,當(dāng)線程隊(duì)列中的數(shù)據(jù)量達(dá)到設(shè)定的閾值時(shí),這批數(shù)據(jù)會(huì)作為一個(gè)事務(wù)在目標(biāo)庫執(zhí)行。對(duì)于有沖突的數(shù)據(jù),則把這條數(shù)據(jù)放到?jīng)_突隊(duì)列,等待線程把上一批數(shù)據(jù)執(zhí)行完成后,再次進(jìn)入并行分析引擎判斷是否存在沖突。

Ps:該內(nèi)容根據(jù)《GaussDB(for openGauss)數(shù)據(jù)遷移之DRS》技術(shù)直播整理完成

 

責(zé)任編輯:張燕妮 來源: 博客園精華區(qū)
相關(guān)推薦

2017-12-13 14:24:08

Google 開發(fā)者瀏覽器

2018-11-28 10:39:01

5G網(wǎng)絡(luò)運(yùn)營商

2023-09-11 08:51:23

LinkedList雙向鏈表線程

2021-06-17 13:40:47

區(qū)塊鏈比特幣公有鏈

2019-11-04 09:07:48

DevOps互聯(lián)網(wǎng)IT

2018-03-31 08:45:52

iPhone交通卡iOS 11.3

2019-04-24 08:31:43

分布式限流kafka

2020-03-18 18:20:19

區(qū)塊鏈數(shù)字貨幣比特幣

2017-01-11 08:37:07

Apache SparStreamingDataFrames

2022-11-08 15:55:34

鴻蒙開發(fā)套件

2019-04-26 09:38:36

中臺(tái)平臺(tái)化轉(zhuǎn)型

2021-07-01 09:00:00

安全數(shù)字化轉(zhuǎn)型滲透

2017-08-15 15:35:21

大數(shù)據(jù)數(shù)據(jù)分析薪資秘密

2017-08-15 16:05:18

大數(shù)據(jù)數(shù)據(jù)分析薪資秘密

2019-10-29 15:28:40

Refs組件前端

2015-10-12 15:50:40

2022-09-15 14:22:19

協(xié)作規(guī)范前后端

2019-12-04 07:57:22

6G5G網(wǎng)絡(luò)

2018-08-23 11:58:53

區(qū)塊鏈數(shù)字貨幣比特幣

2018-05-10 08:50:31

AndroidGoogle 移動(dòng)系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)