簡述
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 平台
-
數據源管理 -> 添加數據源
-
選擇 自建數據源 ,並填寫相關數據庫信息,其中 網絡地址 請按提示帶上端口號
-
如下已添加完 Oracle 和 MySQL
創建同步任務
- 任務管理->新建任務
- 源端選擇剛添加的 Oracle 數據源,目標選擇 MySQL, 分別點擊 測試連接 按鈕以測試數據庫連通性和獲取 schema 級別元信息
- 點擊下一步
- 選擇 數據同步,並且勾選全量數據初始化
- 規格可以根據任務重要度以及部署機器的內存容量合理選擇,一般 2GB 內存規格即可
- 點擊下一步
-
勾選需要同步的表,如果目標表為橙色,表示不存在同名表,任務創建完成后自動進行結構遷移。也可以下拉框選擇表進行映射
-
勾選需要同步的 INSERT/UPDATE/DELETE 操作,默認全選
-
點擊下一步
-
通過勾選做列映射和列裁剪
-
點擊下一步
-
對任務內容進行創建 ,如果任務不需要立刻運行 , 可置灰自動啟動任務 按鈕
-
點擊確認創建
任務同步
- 任務分為 3 個階段:結構遷移、數據初始化、數據同步,每一個階段完成時,狀態自動流轉,直到同步穩態
- 結構遷移:當對端數據庫不存在對應的庫表時 CloudCanal 會自動將 Oracle 的表在對端創建出來
- 數據初始化:將源端所選庫表數據以全量遷移方式搬遷到對端
- 數據同步:准實時的同步增量數據,即源端數據庫上發生的增、刪、改操作同步到對端數據庫上
FAQ
目前 Oracle 源端還支持哪些數據源?
除了 Oracle 到 MySQL 之外,截止社區版 2.0.1.1 版本,還支持下面這些鏈路
- Oracle -> PostgreSQL
- Oracle -> Greenplum
- Oracle -> TiDB
- Oracle -> Oracle
- Oracle -> Kudu 。
預檢失敗會有哪些影響?
一些小伙伴可能在創建任務的時候遇到類似如下報錯信息,可能會有一些疑惑。
在創建任務的最后階段我們會進行一些檢測,Oracle 作為源端會存在如下一些檢測項目。
物化視圖模式下
- 如果表已經創建了物化視圖日志表那么預檢失敗。
Redo 模式下
- 開啟日志歸檔模式
alter database archivelog
開啟過程需要數據庫離線。 - 需要開啟最小補全日志
alter database add supplemental log data
總結
本文簡單介紹了如何使用 CloudCanal 快速構建Oracle-> MySQL 數據遷移同步鏈路,更多的源端和目標端陸續開放。各位小伙伴,如果覺得還不錯,請點贊、評論加轉發吧。
更多精彩
- 5分鍾搞定 MySQL 到 ClickHouse 寬表構建和同步-CloudCanal實戰
- 5分鍾搞定 MySQL 到 ElasticSearch 寬表構建和同步-CloudCanal實戰
- 5分鍾搞定 MySQL 到 ClickHouse 實時數據同步進階篇-CloudCanal實戰
- 5分鍾搞定 MySQL 到 ElasticSearch 遷移同步-CloudCanal 實戰
- 5分鍾搞定 MySQL 到 MySQL 異構在線數據遷移同步-CloudCanal 實戰
- 5分鍾搞定 MySQL 到 TiDB 的數據同步 - CloudCanal實戰
參加內測
Oracle 源端目前處於 beta 階段,你可以通過添加我們的微信小助手(suhuayue001),進入內測群提前進行測試驗證,獲得提交需求優先解決的機會,包括支持以 Oracle 為源端的、尚未開通的鏈路或功能。