🎉 CloudCanal 上线 V6.1.0.0:KingbaseES 分区表迁移性能大幅提升
跳到主要内容

Oracle 到 Elasticsearch

CloudCanal 支持从 Oracle 到 Elasticsearch 的数据迁移、同步、校验和链路能力。

选择对端数据库:

数据链路

基本功能

功能说明
结构迁移

如目标不存在 Index,则根据源端元数据,结合映射规则在对端创建 Index mapping

全量数据迁移

逻辑迁移,通过顺序扫描表数据,将数据分批写入到对端数据库

增量实时同步

支持 INSERT, UPDATE, DELETE 常见 DML 同步
无主键表 UPDATE, DELETE 不同步

数据校验和订正

全量数据校验,并可选根据校验结果订正差异数据,支持定时,文档:创建定时校验订正任务

修改订阅

新增、删除、修改订阅表,支持历史数据迁移,文档:修改订阅

重置位点

时间戳Scn 回溯位点,重新消费过去一段时间 Oracle Redo Log

索引名映射

支持 按下划线拼接(任务名_DB_SCHEMA_表), 转小写, 转大写, 和源端保持一致, 以'_数字'后缀截取

DDL 同步
  • ALTER TABLE ADD COLUMN
元数据检索

从源端表查对端,查询设置过过滤条件的,查询设置过对端主键的

高级功能

功能说明
自动建字典

如果使用离线字典解析 Oracle Redo, 则在创建任务时自动创建字典

全量前清空目标数据

运行全量任务前清除老数据,包括重跑任务、定时全量迁移都会触发此能力

重建目标表

运行全量任务前重建目标表,包括重跑任务、定时全量迁移都会触发此能力

ES 时间写入格式

以该字段的第一个时间格式写入 Elasticsearch,如果未设置时间格式,则使用 yyyy-MM-dd'T'HH:mm:ss 格式

ES 时区设置

只有当时间格式的时区为 ZZZZZ 时,才会将页面设置的时区写入到 Elasticsearch

可选索引字段

默认索引所有字段,可选择不索引指定字段

字段级分词器

可选择字符串类型且索引的字段分词器,支持 STANDARD(默认)、SIMPLE 等常见分词器,并可指定自定义分词器

设定 Index _id 字段

默认以源端主键值拼接,可修改为其他字段值

定时全量迁移

文档1:创建定时全量任务
文档2:定时全量实现增量数据迁移

自定义代码

文档1:创建自定义代码任务
文档2:自定义代码任务 debug
文档3:在自定义代码中打日志

数据过滤条件

支持 WHERE 条件进行数据过滤,内容为 SQL 92 子集,文档:创建数据过滤任务

设置目标主键

变更主键为其他字段,方便数据聚合等操作

限制和注意点

限制项说明
增量同步性能

因 Logminer 有性能上限,且 CloudCanal 未采用并行分析,所以以 3000 条变更/秒 为性能基准

数据类型

不支持 BLOB 及衍生类型

使用示例

标题详情
Oracle 数据迁移同步优化与思考

文档:Oracle 数据迁移同步优化与思考

Oracle 数据迁移同步优化(三)

文档:Oracle 数据迁移同步优化(三)

Elasticsearch 对端同步技术详解

文档:Elasticsearch 对端同步技术详解


源端数据源

前置条件

条件说明
账号权限

文档:Oracle 需要的权限

增量同步准备

文档:Oracle Logminer 准备

网络准备

迁移同步节点(sidecar)可连接 ORACLE 标准交互接口(如 1521)

任务参数

参数名称说明
fullFetchSize

全量扫描数据设置的 fetch size

eventStoreSize

缓存解析完毕的增量事件缓存大小

logminerUser

执行 Logminer SQL 的 Oracle 连接用户

logminerPasswd

执行 Logminer SQL 的 Oracle 连接密码

logminerConnectType

执行 Logminer SQL 的 Oracle 连接类型(PDB),包括 ORACLE_SID, ORACLE_SERVICE 两种可选

logminerSidOrService

执行 Logminer SQL 的 Oracle 连接串 SID 或服务名(PDB)

parseRedoSqlParallel

解析 Logminer 数据的并发度

parseRedoSqlBufferSize

解析 Logminer 数据的环形队列大小

redoFetchSize

单次获取 Logminer 分析数据条数

redoOfferTransMaxSize

未消费但已提交事务最大缓存数量

oraMiningSessionPauseSec

使用 Logminer 挖掘日志间隙停顿时间,单位为秒

maxEventCountPerTxInMem

内存中每个事务的最大事件数

logMiningScnStep

Oracle Logminer 分析 redo log 时指定的分析范围大小

abandonUnCommitTxTimeoutSec

不带数据变更的事务未提交超过设置的值,则自动放弃该事务

restartTxWithDataTimeoutSec

带数据变更的事务未提交超过设置的值,则自动重启任务

oraUseOnlineDic

是否使用在线日志,false 使用离线日志对 Oracle 压力较大

oraReleaseIntervalSec

重建分析链接的间隔,以释放 Oracle 服务端资源

fallBackScnStep

和 Redo log 最新数据保持的距离,0 表示紧跟

sqlCaseConversionEnabled

是否打开 DDL 大小写转换(根据当前数据库默认大小写规则)

Tips: 通用参数配置请参考 通用参数及功能


目标端数据源

前置条件

条件说明
账号权限

具备索引的 create, delete, create_index, delete_index, read, write 权限

网络准备

迁移同步节点(sidecar)可连接 Elasticsearch 节点

任务参数

参数名称说明
maxBulkSizeMb

单表最大攒批容量,超过此容量则刷出数据到写入队列

totalDataInMemMb

攒批写入,内存中最大数据容量,超过此容量或超过 asyncFlushIntervalSec 则刷出数据到写入队列

asyncFlushIntervalSec

攒批写入,等待刷出的间隔时间,超过此时间或超过 totalDataInMemMb 则刷出数据到写入队列

realFlushPauseSec

使用 Bulk Write 刷出数据到 ElasticSearch 的等待时间,0 则不等待

pkSeparator

拼接 _id 的分隔符(字段数 > 1)

enableBulkSizeThreshold

启用批量写入模式(默认开启)

Tips: 通用参数配置请参考 通用参数及功能

联系我们
微信二维码

扫码添加微信,获取技术支持