5分鍾搞定 Oracle 到 MySQL 實時數據同步-CloudCanal實戰


簡述

CloudCanal 2.1.0.x 版本開始支持 Oracle 作為源端的數據遷移同步能力,目前邀請測試中。

本文通過 Oracle 到 MySQL 的數據遷移同步案例簡要介紹這個源端的能力。鏈路特點:

結構遷移、全量遷移、增量同步(數據)、數據校驗俱全流程全自動化

此文章簡要介紹如何快速構建一條長期穩定運行的 Oracle->MySQL 數據鏈路。

技術要點

將數據從 Oracle 中同步出來有兩種方式可以選擇

  • 物化視圖日志
  • 使用 Redo 日志

權限問題

請確保添加的數據源賬號可以訪問如下 13 張表和 1 個函數 ,或者使用一個具有 DBA 權限的 Oracle 賬號。

  • 表 SYS.DBA_USERS
  • 表 SYS.DBA_TABLES
  • 表 SYS.DBA_TAB_COLS
  • 表 SYS.DBA_TAB_COMMENTS
  • 表 SYS.DBA_COL_COMMENTS
  • 表 SYS.PRODUCT_COMPONENT_VERSION
  • 表 SYS.DBA_CONSTRAINTS
  • 表 SYS.DBA_CONS_COLUMNS
  • 表 SYS.DBA_INDEXES
  • 表 SYS.DBA_IND_COLUMNS
  • 表 v$version
  • 表 v$database
  • 表 v$tablespace

對於物化視圖方案來講需要有額外的下列權限

  • 語句 CREATE MATERIALIZED VIEW LOG ON xxx
  • 語句 CREATE INDEX xxxx

對於 Redo 方案來將需要有 LOGMNR 相關的權限

  • 表 SYS.ALL_LOG_GROUPS
  • 表 v$logfile
  • 表 v$log
  • 表 v$archived_log
  • 表 v$logmnr_logs
  • 存儲過程 SYS.DBMS_LOGMNR_D.BUILD
  • 存儲過程 SYS.DBMS_LOGMNR.ADD_LOGFILE
  • 存儲過程 SYS.DBMS_LOGMNR.START_LOGMNR
  • 存儲過程 SYS.DBMS_LOGMNR.END_LOGMNR
  • 語句 ALTER TABLE xxxx DROP SUPPLEMENTAL LOG xxx
  • 語句 ALTER TABLE xxxx ADD SUPPLEMENTAL LOG xxx
  • 語句 ALTER SYSTEM ARCHIVE LOG CURRENT

在配置同步任務之前需要確保上面的 Oracle 權限,另外作為源端 Oracle 全量階段還需要讀取對應表的權限。

舉個 "栗子"

准備 CloudCanal

添加數據源

  • 登錄 CloudCanal 平台

  • 數據源管理 -> 添加數據源

  • 選擇 自建數據源 ,並填寫相關數據庫信息,其中 網絡地址 請按提示帶上端口號
    9d87303b-45dd-4bd1-bd73-f053b59046cf-image.png

  • 如下已添加完 Oracle 和 MySQL
    a718b8f7-7961-4a1d-bb41-445ba81c0037-image.png

創建同步任務

  • 任務管理->新建任務
  • 源端選擇剛添加的 Oracle 數據源,目標選擇 MySQL, 分別點擊 測試連接 按鈕以測試數據庫連通性和獲取 schema 級別元信息
  • 點擊下一步

1a3d90f2-4efb-49d8-b579-8919e9debca6-image.png

  • 選擇 數據同步,並且勾選全量數據初始化
  • 規格可以根據任務重要度以及部署機器的內存容量合理選擇,一般 2GB 內存規格即可
  • 點擊下一步

a3722630-7625-4485-ad56-3340d3fd904d-image.png

  • 勾選需要同步的表,如果目標表為橙色,表示不存在同名表,任務創建完成后自動進行結構遷移。也可以下拉框選擇表進行映射

  • 勾選需要同步的 INSERT/UPDATE/DELETE 操作,默認全選

  • 點擊下一步

    c70a7c0f-cbd9-4f6a-849c-21c607cf769e-image.png

  • 通過勾選做列映射列裁剪

  • 點擊下一步

    d20d2906-6ba5-4fea-bd43-f2033aa3509e-image.png

  • 對任務內容進行創建 ,如果任務不需要立刻運行 , 可置灰自動啟動任務 按鈕

  • 點擊確認創建

    77f49016-0cec-4d33-93d1-a94b741d788f-image.png

任務同步

  • 任務分為 3 個階段:結構遷移數據初始化數據同步,每一個階段完成時,狀態自動流轉,直到同步穩態
    afd38301-a854-4543-b814-8782ed1c094d-image.png
    c2772d7c-2ab7-470c-8551-280f723221ad-image.png
    • 結構遷移:當對端數據庫不存在對應的庫表時 CloudCanal 會自動將 Oracle 的表在對端創建出來
    • 數據初始化:將源端所選庫表數據以全量遷移方式搬遷到對端
    • 數據同步:准實時的同步增量數據,即源端數據庫上發生的增、刪、改操作同步到對端數據庫上

FAQ

目前 Oracle 源端還支持哪些數據源?

除了 Oracle 到 MySQL 之外,截止社區版 2.0.1.1 版本,還支持下面這些鏈路

  • Oracle -> PostgreSQL
  • Oracle -> Greenplum
  • Oracle -> TiDB
  • Oracle -> Oracle
  • Oracle -> Kudu 。

預檢失敗會有哪些影響?

一些小伙伴可能在創建任務的時候遇到類似如下報錯信息,可能會有一些疑惑。
8f3f8d80-437a-4ce9-b3d6-450a0f5e0466-image.png
在創建任務的最后階段我們會進行一些檢測,Oracle 作為源端會存在如下一些檢測項目。

物化視圖模式下

  • 如果表已經創建了物化視圖日志表那么預檢失敗。

Redo 模式下

  • 開啟日志歸檔模式 alter database archivelog 開啟過程需要數據庫離線。
  • 需要開啟最小補全日志 alter database add supplemental log data

總結

本文簡單介紹了如何使用 CloudCanal 快速構建Oracle-> MySQL 數據遷移同步鏈路,更多的源端和目標端陸續開放。各位小伙伴,如果覺得還不錯,請點贊、評論加轉發吧。

更多精彩

參加內測

Oracle 源端目前處於 beta 階段,你可以通過添加我們的微信小助手(suhuayue001),進入內測群提前進行測試驗證,獲得提交需求優先解決的機會,包括支持以 Oracle 為源端的、尚未開通的鏈路或功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM