首页 > 数据库 >CloudCanal实战-五分钟搞定Oracle到StarRocks数据迁移与同步

CloudCanal实战-五分钟搞定Oracle到StarRocks数据迁移与同步

时间:2022-12-23 10:34:21浏览次数:76  
标签:StarRocks CloudCanal 数据源 ORACLE Oracle 源端

简述

CloudCanal当前最新版本已经支持源端Oracle、SqlServer等主流传统数据库作为源端迁移同步数据到StarRocks来构建实时数仓。本文简要介绍如何快速构建一条Oracle->StarRocks数据链路。

技术要点

基于StreamLoad的导入方式

CloudCanal 采用了 StreamLoad 的方式进行导入,源端的消息会转成字节流,最后会以批量发送的形式通过 HTTP 协议发往 StarRocks。
CloudCanal 默认采用 json 格式来进行StreamLoad导入,如果用户内容特殊字符较少,也可以开启 csv 格式导入,分隔符可以通过参数 columnSeparator 和 lineSeparator 设置。
基于 StreamLoad 的写入方式,实际写入对端的操作均为 INSERT,CloudCanal 同步时会自动将 UPDATE / DELETE 转成 INSERT 语句,并修改 __op 值,StarRocks会自动进行数据合并。

支持常用DDL实时同步

Oracle -> StarRocks 支持新增列、删除列DDL。DDL实时同步到对端时会自动转换成StarRocks兼容的语法,数据类型也会根据映射关系进行自动转换。

编辑订阅功能

CloudCanal 提供了便利的修改订阅能力。对于一个已经创建好的正在运行的增量同步任务,如果由于业务需求有新增表需要订阅,可以在原有任务的基础上新增需要订阅的表,生成子任务,自动完成全量、增量迁移同步,在完成后会子任务会自动与原有的任务合并。

数据类型映射

CloudCanal结构迁移和数据迁移同步时会自动进行数据类型映射。类型映射见下表:

Oracle类型 StarRocks类型
CHAR VARCHAR
NCHAR VARCHAR
VARCHAR2 VARCHAR
NVARCHAR VARCHAR
NVARCHAR2 VARCHAR
LONG STRING
NUMBER_BIGINT BIGINT
NUMBER_DECIMAL DECIMAL
FLOAT FLOAT
BINARY_FLOAT DECIMAL
BINARY_DOUBLE DECIMAL
CLOB STRING
NCLOB STRING
DATA DATETIME
TIMESTAMP DATETIME
TIMESTAMP_WITH_TIME_ZONE DATETIME
TIMESTAMP_WITH_LOCAL_TIME_ZONE DATETIME
INTERVAL_YEAR_TO_MONTH DATETIME
INTERVAL_DAY_TO_SECOND DATETIME
ROWID STRING
PLSQL_BOOLEAN BOOLEAN
XMLTYPE STRING
HTTPURITYPE STRING

操作示例

准备CloudCanal

  • 安装好CloudCanal
  • 准备好源端和目标端数据库及对应数据

Oracle源端前置准备

CloudCanal在做Oracle作为源端的数据迁移同步时,需要做一些前置准备。具体可以参考 ORACLE LogMiner同步准备

添加数据源

  • 登录CloudCanal平台
  • 数据源管理->添加数据源

image.png

  • 创建源端数据源:选择自建数据源,选择Oracle,并填写相关数据库信息,点击新增数据源确定创建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

image.png

  • 创建目的端数据源:选择自建数据源,选择StarRocks,并填写相关数据库信息,点击新增数据源确定创建StarRocks数据源

image.png

  • Client地址:StarRocks提供的MySQLClient服务端口,CloudCanal主要用其查询库表的元数据信息,对应StarRocks的QueryPort,默认端口为9030
  • Http地址:Http地址主要用于接收streamload的http请求。此处可以填写StarRocks BE节点的端口,默认为8030;如需负载均衡也支持直接填写FE的地址和端口,StarRocks的FE会自动处理stream load的http请求
  • 查看数据源是否创建成功

image.png

任务创建

  • 任务管理->创建任务

image.png

  • 选择集群
  • 源端选择刚添加的Oracle数据源,目标端选择StarRocks数据源,分别点击测试连接按钮以测试数据库连通性和获取schema级别元信息,显示连接成功后,设置数据库映射关系
  • StarRocks的结构迁移支持用户自定义分桶数等自定义建表信息
  • 点击下一步

image.png

  • 选择增量同步,并且勾选全量初始化
  • 点击下一步

image.png

  • 选择订阅的表
  • 点击下一步

image.png

  • 配置列映射
  • 点击下一步

image.png

  • 点击创建任务

image.png

  • 任务创建成功并启动后,会自动执行结构迁移、全量迁移、增量同步

image.png

总结

本文简单介绍了如何使用CloudCanal进行Oracle->StarRocks 数据迁移同步。各位读者朋友,如果你觉得还不错,请点赞、评论加转发吧。

标签:StarRocks,CloudCanal,数据源,ORACLE,Oracle,源端
From: https://www.cnblogs.com/clougence/p/17000154.html

相关文章

  • 不止Oracle 读书笔记
    Oracle由实例和数据库组成,上半部的直角方框为实例instance,下半部的圆角方框为数据库Database。实例是由一个共享内存区SGA(SystemGlobalArea)和一系列后台进程组成的,其中......
  • Oracle函数入坑指南
     一、oracle函数概述Oracle 提供一系列用于执行特定操作的函数SQL函数带有一个或多个参数并返回一个值以下是SQL函数的分类: 二、单行函数单行函数对于从表中......
  • oracle修改表结构
    --添加表字段altertablepublic_memoaddoperate_uservarchar2(10);public_memo为表的名字,operate_user为表中字段的名称--修改表字段结构altertablepubl......
  • python 导出oracle表结构到word文档
    安装oracleclienthttps://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html解压后把这几个文件放到python的site-package里面安......
  • oracle 2个数组列,剔除数组重复的数据。
    一、下面这样不规则的,数据如何剔除掉。循环筛选replace替换掉。序号正常时间剔除时间1   2022-12-19,2......
  • C# Oracle数据库连接并执行类
    OracleHelper.cs usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Text;usingSystem.Data;usingSystem.Con......
  • 使用otter实现数据同步——mysql、oracle的数据同步利器
    文章目录Otter⽬前⽀持了什么整体架构环境准备下载安装修改配置⽂件运⾏ManagerNode配置⼀个同步任务添加canal添加数据源添加数据表配置添加⼀个chan......
  • Oracle数据库业务SQL优化实战-时间区间查询案例
    背景查询字段其实比较多,我选择聚焦在瓶颈点上,让我们开始吧功能背景简介:我们在一个进入数据中心的入口设置了一台记录人员进出的机器,由保卫员操作记录人员进出(通过换取通......
  • 在linux上oracle服务启动停止详细
    在CentOS6.3下安装完Oracle10gR2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介绍一般而言如......
  • 数据库历险记(一) | MySQL这么好,为什么还有人用Oracle?
    关系型数据库(RelationalDataBaseManagementSystem),简称RDBMS。说起关系型数据库,我们脑海中会立即浮现出Oracle、MySQL、SQLServer等数据库,这些都是我们常用的关系型数......