將Oracle同步到Kafka
更新時間 2024-10-23 15:40:27
最近更新時間: 2024-10-23 15:40:27
分享文章
本節主要介紹將Oracle同步到Kafka
支持的源和目標數據庫
表 支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| 本地自建Oracle數據庫 ECS自建Oracle數據庫 |
Kafka |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時同步支持的數據庫類型和版本,詳情請參見實時同步。
使用建議
- 數據庫同步與環境多樣性和人為操作均有密切關系,為了確保同步的平順,建議您在進行正式的數據庫同步之前進行一次演練,可以幫助您提前發現問題并解決問題。
- 建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,避免同步對業務造成性能影響。
使用須知
在創建同步任務前,請務必閱讀以下使用須知。
表 環境要求
| 類型名稱 | 使用限制 (DRS自動檢查) |
|---|---|
| 數據庫權限設置 | 源數據庫端:? 12c及以上版本CDB數據庫同步時,需要具有CREATE SESSION,SELECT ANY DICTIONARY,針對單表的SELECT權限(GRANT SELECT <userName.tbName> to drsUser;),EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SELECT ON SYS.COL?,SELECT ON SYS.OBJ,SET CONTAINER(GRANT SET CONTAINER TOCONTAINER=ALL;)權限。 ? 12c及以上版本PDB數據庫同步時,除了需要具有CREATE SESSION,SELECT ANY DICTIONARY,針對單表的SELECT權限(GRANT SELECT <userName.tbName> to drsUser;),EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SELECT ON SYS.COL?,SELECT ON SYS.OBJ權限,還需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARYCREATE SESSION, SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TOCONTAINER=ALL;)權限。 ? 11g及以下版本數據庫同步時,需要具有CREATE SESSION,SELECT ANY DICTIONARY,針對單表的SELECT權限(GRANT SELECT <userName.tbName> to drsUser;),EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,SELECT ON SYS.COL?,SELECT ON SYS.OBJ。 |
| 同步對象約束 | 支持表的同步,其他數據庫對象暫不支持。 支持VARCHAR、VARCHAR2、NVARCHAR2、NUMBER、FLOAT、LONG、DATE、BINARY_FLOAT、BINARY_DOUBLE、CHAR、NCHAR、ROWID、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE類型。* 不支持接入的列類型:GEOMETRY以及自定義類型。* 不支持同步但以過濾方式接入的列類型:BLOB、 CLOB、NCLOB、INTERVAL_YEAR_TO_MONTH、INTERVAL_DAY_TO_SECOND、UROWID、BFILE、XML、LONG、long raw。* 支持同步但默認過濾的列類型:raw(同步數據為原始二進制數據)。* 不支持默認值含有表達式的函數的表的同步。 |
| 源數據庫要求 | 庫名、表名不支持的字符有:非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “ |
| 目標數據庫要求 | 目標庫為社區Kafka。 |
| 操作須知 | 如有中文、日文等特殊字符,業務連接Oracle數據庫使用的編碼需和Oracle數據庫服務端編碼一致,否則目標庫會出現亂碼。 Oracle中實時同步到kafka后的字符集為UTF8。 對于Oracle RAC集群,建議使用SCAN IP+ SERVICE_NAMES方式創建任務,SCAN IP具有更強的容錯性,更好的負載能力,更快的同步體驗。 源庫為Oracle RAC環境時,如果需要使用SCAN IP,需要保證SCAN IP與源庫的所有VIP互通,否則無法通過連接檢查。若不使用SCAN IP,可以使用某一節點的VIP,其他節點異常不影響同步。 日志中未出現的列在傳遞的消息中不會出現,表示該列未更新。 同步過程中,不允許刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改目標數據庫的端口號。 選擇表級對象同步時,增量同步過程中不建議對表進行重命名操作。 由于kafka的機制,Topic名字格式不能以"__" , "."開頭,或以".internal","-internal" 結尾,這些命名格式的Topic會被當做為kafka的內部Topic,業務無法使用。 支持表級DDL操作。 任務再編輯增加新表時,請確保新增的表的事務都已提交,否則未提交的事務可能無法同步到目標庫。建議在業務低峰期做增加表的操作。 |
操作步驟
步驟 1 在“實時同步管理”頁面,單擊“創建同步任務”。
步驟 2 在“同步實例”頁面,填選任務名稱、描述、同步實例信息,單擊“下一步”。
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4-50位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
表 同步實例信息
| 參數 | 描述 |
|---|---|
| 數據流動方向 | 選擇“自建-自建”。 |
| 源數據庫引擎 | 選擇“Oracle”。 |
| 目標數據庫引擎 | 選擇“Kafka”。 |
| 網絡類型 | 此處以“公網網絡”為示例。目前支持可選公網網絡、VPC網絡和VPN、專線網絡。 |
| 可用區 | 選擇DRS實例創建在哪個可用區,選擇跟源或目標庫相同的可用區性能更優。 |
| VPC | 選擇可用的虛擬私有云。 |
| 同步實例所在子網 | 請選擇同步實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。 默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保同步實例創建成功,僅顯示已經開啟DHCP的子網。 |
| IP類型 | 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 |
| 同步類型 | 請選擇內網安全組。內網安全組限制實例的安全訪問規則,加強安全訪問。 |
| 標簽 | 對于已成功關聯企業項目的用戶,僅需在“企業項目”下拉框中選擇目標項目。 如果需要自定義企業項目,請前往項目管理服務進行創建。關于如何創建項目,詳見《項目管理用戶指南》。 * 可選配置,對同步任務的標識。使用標簽可方便管理您的任務。每個任務最多支持10個標簽配額。* 任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見 標簽管理。 |
步驟 3 在“源庫及目標庫”頁面,同步實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
表 源庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 源數據庫的IP地址或域名。 說明 對于RAC集群,建議使用scanip接入,提高訪問性能。 |
| 端口 | 源數據庫服務端口,可輸入范圍為1~65535間的整數。 |
| 數據庫服務名 | 數據庫服務名(Service Name/SID),客戶端可以通過其連接到Oracle,具體查詢方法請參照界面提示。 |
| PDB名稱 | PDB同步僅在Oracle12c及以后的版本支持,該功能為選填項,當需要遷移PDB中的表時開啟。 PDB功能開啟后,只能遷移該PDB中的表,并且需要提供CDB的service name/sid及用戶名和密碼,不需要PDB的用戶名和密碼。 |
| 數據庫用戶名 | 源數據庫的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對遷移鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 * 最大支持上傳500KB的證書文件。* 如果不使用SSL證書,請自行承擔數據安全風險。 |
說明源數據庫的IP地址或域名、數據庫用戶名和密碼,會被系統加密暫存,直至刪除該遷移任務后自動清除。
表 目標庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 目標數據庫的IP地址或域名。 |
| 安全協議 | 支持四種認證方式的選擇,PLAINTEXT、SSL、SASL_PLAINTEXT和SASL_SSL,詳細說明可參考 Kafka認證方式。 |
步驟 4 在“設置同步”頁面,選擇Topic和同步對象,單擊“下一步”。
表 同步模式和對象
| 參數 | 描述 |
|---|---|
| Topic | 選擇目標端需要同步到的Topic。 |
| 投送到kafka的數據格式 | 選擇Oracle投送到kafka的數據格式。 * Avro:可以顯示Avro二進制編碼,高效獲取數據。* Json:為Json消息格式。詳細格式可參考Kafka消息格式。 |
| 同步對象 | 同步對象支持表級同步,您可以根據業務場景選擇對應的數據進行同步。 選擇對象的時候支持搜索,以便您快速選擇需要的數據庫對象。 |
步驟 5 在“預檢查”頁面,進行同步任務預校驗,校驗是否可進行實時同步。
- 查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行任務預校驗。
- 預檢查完成后,且所有檢查項結果均通過時,單擊“下一步”。
說明所有檢查項結果均通過時,若存在請確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 6 在“任務確認”頁面,設置同步任務的啟動時間,并確認同步任務信息無誤后,單擊“啟動任務”,提交同步任務。
表 任務啟動設置
| 參數 | 描述 |
|---|---|
| 啟動時間 | 同步任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”。 說明 預計同步任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議選擇業務低峰期,合理設置同步任務的啟動時間。 |
步驟 7 同步任務提交后,您可在“管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見 任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。