CloudCanal實戰-Oracle數據遷移同步到PostgreSQL

来源:https://www.cnblogs.com/clougence/archive/2023/01/13/17050239.html
-Advertisement-
Play Games

簡述 本篇文章主要介紹如何使用 CloudCanal 構建一條 Oracle 到 PostgreSQL 的數據同步鏈路 技術要點 縮小的資料庫許可權要求 CloudCanal 對 Oracle 資料庫的高許可權要求,主要來自兩個面向 DBA 的操作,自動構建字典和 自動切換歸檔日誌,這兩個操作主要是讓用 ...


簡述

本篇文章主要介紹如何使用 CloudCanal 構建一條 OraclePostgreSQL 的數據同步鏈路

技術要點

縮小的資料庫許可權要求

CloudCanalOracle 資料庫的高許可權要求,主要來自兩個面向 DBA 的操作,自動構建字典自動切換歸檔日誌,這兩個操作主要是讓用戶使用更加自動化和便利,但是問題也比較明顯,對資料庫運維標準嚴苛的客戶來說,這些許可權對於我們的客戶是沒有的,所以新版本 CloudCanal ,通過參數配置,支持了關閉自動字典構建能力(預設打開)關閉自動切換歸檔日誌能力(預設關閉)

多版本 schema 以支持位點回拉

對於關係型資料庫同步工具而言,增量數據本身往往和元數據分離,也就是消費到的增量數據和即時從資料庫裡面獲取的元數據不一定匹配(兩個時間點之間有DDL),所以維持一個多版本的元數據以應對增量數據解析是必要的, CloudCanal 以每天的 schema dump 為基準,輔以到當前位點的 DDL 語句列表,可構建出任何時間點的元數據(實際上是更加精確的 scn 位點),單個 DDL 前後的數據變更事件,能夠精確匹配到相對應的元數據進行解析, CloudCanal 才有可能在此版本產品上提供了回拉位點重覆消費一段時間增量數據的能力

支持的版本

源端 Oracle 支持的版本:10.X11.X12.X18.X19.X

對端 PostgreSQL 支持的版本:8.49.09.19.29.39.49.59.610.X11.X12.X13.X14.X15.X16.X17.X

支持的DDL&數據類型映射

  • Oracle -> PostgreSQL 鏈路支持的DDL暫時只有 ALTER TABLE ,後續我們將不斷進行完善
  • CloudCanal 結構遷移和數據遷移同步時會自動進行數據類型映射

類型映射見下表:

Oracle 欄位類型 PostgreSQL 欄位類型
CHAR、NCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、ROWID、HTTPURITYPE CHARACTER_VARYING
LONG、CLOB、NCLOB TEXT
NUMBER_BIGINT BIGINT
NUMBER_DECIMAL、BINARY_FLOAT、BINARY_DOUBLE NUMERIC
FLOAT REAL
DATE、TIMESTAMP TIMESTAMP_WITHOUT_TIME_ZONE、TIMESTAMP_WITHOUT_TIME_ZONE
TIMESTAMP_WITH_TIME_ZONE、TIMESTAMP_WITH_LOCAL_TIME_ZONE TIMESTAMP_WITH_TIME_ZONE
XMLTYPE XML

Tips : 針對於 Oracle -> PostgreSQL 鏈路,源端 Oracle 不在上表的欄位類型暫時不支持

操作示例

準備工作

  • 安裝最新版的 CloudCanal
  • 準備好源端數據源和對端數據源以及源端數據
  • CloudCanalOracle 作為源端進行數據遷移時,需要做一些額外的準備,具體參考ORACLE LogMiner同步準備

添加數據源

  • 登錄 CloudCanal 平臺
  • 數據源管理 -> 新增數據源

image.png

  • 選擇自建資料庫 -> 選擇對應資料庫 -> 輸入相關信息 -> 測試連接-> 新增數據源

image.png

Tips :Oracle 相較於其他數據源有一些額外的參數可以調整

  • logminerUser:ORACLE源端增量任務使用redo解析(logminer)方式時使用的賬號,需要CDB類型用戶
  • logminerPasswd:ORACLE源端增量任務使用redo解析(logminer)方式時使用的賬號密碼
  • logminerConnectType:ORACLE源端增量任務使用redo解析(logminer)方式時使用的連接方式,目前支持ORACLE_SID或ORACLE_SERVICE模式
  • logminerSidOrService:ORACLE源端增量任務使用redo解析(logminer)方式時使用的連接標識符,和logminerConnectType參數配合使用,ORACLE_SID連接方式,則填寫sid,ORACLE_SERVICE連接方式,則填寫service name
  • 添加 OraclePostgreSQL 之後可以在數據源列表中看到新增的數據源

image.png

創建同步任務

  • 任務管理 -> 創建任務
  • 源端選擇 Oracle 數據源,對端選擇 PostgreSQL數據源
  • 分別點擊測試連接,選擇源端和對端需要訂閱的資料庫,選擇下一步

image.png

  • 選擇 全量遷移 -> 勾選 增量同步 -> 根據自身機器配置選擇 任務規格
  • 選擇 下一步

image.png

  • 選擇源端需要同步的表,如果目標表顯示橙色表示對端不存在該表,任務創建之後,會自動生成該表
  • 點擊 下一步

image.png

  • 可以在左側選擇添加 數據過濾條件
  • 點擊 下一步

image.png

  • 點擊 創建任務

image.png

任務執行

任務創建並且啟動後,會自動進行如下的三個階段:

  • 結構遷移:任務創建之後,如果對端沒有表結構,那麼 CloudCanal 會去自動在對端創建表結構
  • 全量遷移:將源端存量數據整體遷移到對端
  • 增量同步:全量遷移期間以及全量完成以後的源端增量數據變更會實時同步到對端

image.png
image.png

總結

本文簡單介紹瞭如何使用 CloudCanal 進行 Oracle -> PostgreSQL 數據遷移同步。各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧


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

-Advertisement-
Play Games
更多相關文章
  • 在進行Compose應用開發時,發現沒有下拉刷新上拉載入,沒有Android原生提供的SwipeRefreshLayout。 查看官方simple樣例(https://github.com/android/compose-samples),在官方樣例的基礎進行簡單封裝, 編寫的了ComposeRef ...
  • 需求效果:文本的高度為50dp,並且文字垂直居中 根據需求寫出如下代碼: Text(text = "你好,世界!", modifier = Modifier.height(50.dp), textAlign = TextAlign.Center) 運行後發現Text文字沒有垂直居中,設置textAl ...
  • 摘要:跨域,對後端工程師來說,可謂既熟悉又陌生。 本文分享自華為雲社區《後端老司機的跨域之旅》,作者: 勇哥java實戰分享。 跨域,對後端工程師來說,可謂既熟悉又陌生。 這兩個月我以架構師的角色參與一款教育產品的孵化,有了一段難忘的跨域之旅。 寫這篇文章,我想分享我在跨域這個知識點的經歷和思考,希 ...
  • 原文鏈接: 工作流引擎架構設計 最近開發的安全管理平臺新增了很多工單申請流程需求,比如加白申請,開通申請等等。最開始的兩個需求,為了方便,也沒多想,就直接開發了對應的業務代碼。 但隨著同類需求不斷增多,感覺再這樣寫可要累死人,於是開始了工作流引擎的開發之路。查找了一些資料之後,開發了現階段的工作流引 ...
  • 混沌工程是通過主動製造故障場景並根據系統在各種壓力下的行為表現確定優化策略的一種系統穩定性保障手段,簡單說就是通過主動註入故障的方式、提前發現問題,然後解決問題規避風險。 ...
  • 視頻格式就是通常所說的.mp4,.flv,.ogv,.webm等。簡單來說,它其實就是一個盒子,用來將實際的視頻流以一定的順序放入,確保播放的有序和完整性。 ...
  • ​01 前言 筆者在嘗試擴容C盤時,程式出錯導致D盤無法正常使用,最後誤將其格式化的悲傷故事。(低級錯誤) 02 竇娥冤 前天晚上十點左右,看著電腦里的C盤已經空間不足好幾天了,便想著擴容一下。 因為我的電腦是雙系統, Windows10+MacOS(黑蘋果) 所以硬碟的磁碟分區比較複雜, 一些引導 ...
  • 假設要在centos7.6防火牆上開啟443埠 前言:文章內容可能會因環境不同而有所差異,所謂集思廣益說不定靈感就來了呢; 文章初衷旨在交流學習、記錄個人成長,如果能幫助到您,那就點個贊噢。 1、查看防火牆是否開啟,如果沒有開啟防火牆,預設開放所有埠。 註意:如果是生產環境有業務在運行,開啟防火 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...