主頁 >  其他 > 資料庫同步有哪些方式???怎么保障目標和源資料一致性??

資料庫同步有哪些方式???怎么保障目標和源資料一致性??

2021-09-06 07:44:13 其他

文章目錄

  • 摘要
  • 一、幾種主流的資料庫同步方式
  • 二、架構及作業原理
  • 三、全量同步和實時增量同步機制
  • 四、源和目標
  • 五、舉例:Oracle 資料實時同步到 Elasticsearch
  • 六、目標和源資料一致性
  • 七、異構資料型別轉換
  • 八、總結

摘要

資料庫同步有3大難題:
1是如何保障目標和源資料一致性;
2是異構資料庫如何做資料型別轉換,導致資料同步失敗的原因常常是因為資料型別不一樣;
3是在資料越實時越有價值的背景下,同步程序中能否做到實時同步,

一、幾種主流的資料庫同步方式

方式一:基于無侵入的日志模式(如Oracle redo、Mysql binlog)
基于日志的采集方式無需在源庫端部署任務代理程式(Agent)及建任何表,對源資料庫無侵入和影響壓力;

方式二:基于時間戳
同步程序通過特定屬性(如時間戳、自增序列)來識別新插入的資料,該方式實作最簡單,但無法記錄洗掉和更新,也不具備實時的能力;

方式三:基于觸發器
基于資料庫的觸發器機制,當執行DML相關陳述句時,執行動作來捕獲資料,該方式會降低系統能,因此大多數場景下,生產系統不允許添加觸發器,

方式四:基于快照
基于快照的方式,可以通過比較源表和快照表來獲得資料變化,但需要消耗大量存盤空間和計算資源,

方式五:基于離線批處理
通過jdbc查詢來批量獲取資料,會進行資料表的大范圍掃描和資料提取,會對資料庫產生大量開銷,

本文主要探討無侵入的CDC模式,并以運用這種模式的資料庫同步云工具 Tapdata Cloud 舉例,你要問我為啥用它舉例,原因只有一個:永久免費,

二、架構及作業原理

Tapdata Cloud包含兩部分:

  1. Tapdata Cloud Manager,TCM是Tapdata Cloud的管理端,負責agent實體的安裝,同步任務的配置、分發、任務狀態監測,
  2. Tapdata agent,是Tapdata Cloud資料同步服務的執行實體,負責從TCM獲取任務資訊,通過流式技術從源系統獲取資料、處理轉換資料并發送到目標系統,并在任務執行程序中監測并上報任務狀態至TCM,

在這里插入圖片描述

(Tapdata Cloud 作業原理圖)

有朋友可能會擔心這個云平臺會不會把我要同步的資料泄露出去?

從Tapdata Cloud 作業原理上可以看出:

  1. 同步實體節點單向連接管控端運行服務, Tapdata agent實體節點對外不主動暴露網路資訊,只會連接 TCM管理端服務,獲取任務資訊、上報狀態資訊,
  2. 用戶部署的Tapdata agent實體節點和 TCM 通信鏈路采用 HTTPS 協議,
  3. 自建模式下,所有資料流轉均發生在受用戶管理的服務器和網路環境,
    可見,資料同步程序中資料泄露的問題大可不必擔憂,

三、全量同步和實時增量同步機制

Tapdata Cloud 這款云同步工具支持全量同步和實時增量同步,實作的程序如下圖所示:
在這里插入圖片描述


四、源和目標

據 Tapdata Cloud 最新版本,目前支持了:

資料庫版本作為源作為目標是否可用
mysql5.x,8.x支持支持
oracle9i, 10g, 11g, 12c支持支持
sqlsever2005, 2008, 2012, 2014, 2016, 2017支持支持
mongodb3.2, 3.4, 3.6, 4.0, 4.2支持支持
PostgreSQL9.x, 10.x,11.x,12.x,13.x支持支持
Elastic5.x, 6.x, 7.x暫不支持支持
達夢資料庫7,8支持支持
Kafka2.3.x及以上暫不支持支持
Redis2.x, 3.x, 4.x暫不支持支持即將上線
DB29.7 LUW版本支持支持即將上線
SybaseSybase ASE 15.7 及以上支持支持即將上線
Gbase支持支持即將上線

五、舉例:Oracle 資料實時同步到 Elasticsearch

一般需要做全文檢索的時候,會將 Oracle 資料實時同步到 Elasticsearch,

第一步:配置 Oracle 連接

  1. 點擊 Tapdata Cloud 操作后臺左側選單欄的【連接管理】,然后點擊右側區域【連接串列】右上角的【創建連接】按鈕,打開連接型別選擇頁面,然后選擇Oracle
    在這里插入圖片描述

  1. 在打開的連接資訊配置頁面依次輸入需要的配置資訊
    在這里插入圖片描述

【連 接 名 稱】:設定連接的名稱,多個連接的名稱不能重復
【資料庫地址】:資料庫 IP / Host
【端 口】:資料庫埠
【資料庫名稱】:tapdata 資料庫連接是以一個 db 為一個資料源,這里的 db 是指一個資料庫實體中的 database,而不是一個 schema,
【賬 號】:可以訪問資料庫的賬號
【密 碼】:資料庫賬號對應的密碼
【時 間 時 區】:默認使用該資料庫的時區;若指定時區,則使用指定后的時區設定

第二步:配置 Elasticsearch 連接

  1. 同第一步操作,點擊左側選單欄的【連接管理】,然后點擊右側區域【連接串列】右上角的【創建連接】按鈕,打開連接型別選擇頁面,然后選擇Elasticsearch
    在這里插入圖片描述

  1. 在打開的連接資訊配置頁面依次輸入需要的配置資訊,配置完成后測驗連接保存即可,
    在這里插入圖片描述

第三步:建立同步任務,以全量+增量同步舉例
進入Tapdata Cloud 操作后臺任務管理頁面,點擊添加任務按鈕進入任務設定流程
在這里插入圖片描述


根據剛才建好的連接,選定源端與目標端,
在這里插入圖片描述


根據資料需求,選擇需要同步的庫、表,如果你對表名有修改需要,可以通過頁面中的表名批量修改功能對目標端的表名進行批量設定.
在這里插入圖片描述


在以上選項設定完畢后,點擊下方的全量+增量選項并點擊確定按鈕即可完成本次全量同步任務的配置,在點擊確定后將自動回傳任務管理頁面,在任務管理頁面中,點擊右側的啟動按鈕即可使Tapdata Agent 開始執行本次任務,在全量任務執行完畢后,Tapdata Agent 會自動進入增量同步狀態,在該狀態中,Tapdata Agent 會持續監聽源端的資料變化(包括:寫入、更新、洗掉),并實時的將這些資料變化寫入目標端,

在這里插入圖片描述


點擊任務監控可以打開任務執行詳情頁面,可以查看任務執行的具體資訊,
在這里插入圖片描述


同理,其他資料庫的同步操作也跟上面步驟一致,比如幾個常用的場景是:
? 從業務資料庫到快取資料庫的實時同步
? 不停機遷移資料庫
? 將主業務中心的資料實時同步至次業務中心
? 構建只讀實體
? 構建異地災備中心
? 構建異地多活


六、目標和源資料一致性

很多人都擔心同步的資料可能沒法和源資料一致,Tapdata Cloud 提供了資料校驗功能,包括快速count校驗、表全欄位值校驗和關聯欄位值校驗三種校驗方式,
? 快速count:僅對源表和目標表的行數進行count校驗,速度極快,但是不會展示差異的具體欄位內容,
? 全表欄位值校驗:會對源表和目標表的全部欄位進行逐行校驗,能查出所有欄位的差異,但是速度慢,
? 關聯欄位值校驗:只對源表和目標表的關聯欄位的值進行比對校驗,速度快于全表欄位值校驗模式,
校驗操作步驟
進入資料校驗選單,點擊新建校驗任務創建資料校驗,
【選擇任務】:選擇一個歷史同步任務
【校驗型別】:可選 快速count校驗、表全欄位值校驗和關聯欄位值校驗
【校驗任務名】:默認與選擇的同步任務名字一樣
【校驗頻次】:設定您的校驗的執行頻次
【單次校驗】:只執行一次校驗
【重復校驗】:設定校驗任務重復執行,支持設定校驗執行的起止時間和校驗間隔
【錯誤資料保存條數】:當出現校驗不一致的資料時,不一致資料保存的最大條數,該數值會影響到差異校驗,當錯誤資料條數超出設定的保存條數時,將無法進行差異校驗,
【校驗條件】:添加需要進行校驗的表,點擊自動添加會自動將任務下的所有表全部添加進來,

快速count校驗

創建快速count校驗時只需要選擇到要校驗的表,無需設定關聯條件,
在這里插入圖片描述


表全欄位值校驗

除了要選擇待校驗表外,還需要針對每一個表設定索引欄位,
在這里插入圖片描述


在進行表全欄位值校驗時,還支持進行高級校驗,通過高級校驗可以添加JS校驗邏輯,對源和目標的資料進行校驗,

在這里插入圖片描述


完整示例:以MongoDB查詢示例

JavaScript

function validate(sourceRow){
    // 第1步
    var targetRow = target.executeQuery({database: "target",collection: "USER",filter: {USER_ID: sourceRow.USER_ID}});
    // 第2步
    if(sourceRow.USER_ID === targetRow[0].USER_ID){
        // 第3步
        return {result: 'passed',message: "",data: ""}
    }else{
        return {result: 'failed',message: "記錄不一致",data: targetRow}
    }
}

在這里插入圖片描述


關聯欄位值校驗

創建關聯欄位值校驗時,除了要選擇待校驗表外,還需要針對每一個表設定索引欄位,
在這里插入圖片描述

七、異構資料型別轉換

在異構資料庫之間做同步,型別轉換是一大難題,也是導致資料同步失敗的重要原因,Tapdata Cloud 型別映射功能,在系統推演的基礎上,提供了人工調整的能力,這一點比其他資料同步工具都更方便使用,
在這里插入圖片描述


八、總結

為了達到資料實時要求,并且不對源庫造成干擾,首選 CDC 模式,
現在市面上已經陸續出現了一些資料同步工具,完全沒有必要自己擼代碼了,免費的用起來不香嗎?
希望上文的實操圖文,對你的資料庫同步有幫助,有資料庫相關的問題可以隨時跟我交流!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297791.html

標籤:其他

上一篇:【elasticsearch系列】安裝elasticsearch-head插件

下一篇:【elasticsearch系列】雙擊elasticsearch.bat閃退,日志排查報錯資訊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more