跳到主要内容

OceanBase

支持的对端数据源及功能

请选择对端数据源,文档相关内容会根据对端数据源不同而调整。

选择对端:

核心能力

功能MySQL
结构迁移

全量数据迁移

增量实时同步

数据校验

数据订正

DDL实时同步
  • 增/减列
  • 增/减索引
  • 修改列
  • 重命名列
  • 重命名表
  • 创建表

使用限制与注意点

说明
当前仅支持MySQL兼容模式

Oracle兼容模式尚未验证

设置正确的租户

创建任务时可以指定租户。请确保需要设置的租户信息、userName中的租户信息均保持一致

字段类型与映射

OceanBaseMySQL
BIGINTBIGINT
BINARYBINARY
BITBIT
BLOBBLOB
BOOLEANNot Supported
CHARCHAR
DATEDATE
DATETIMEDATETIME
DECIMALDECIMAL
DOUBLEDOUBLE
ENUMENUM
FLOATFLOAT
INTINT
LONGBLOBLONGBLOB
LONGTEXTLONGTEXT
MEDIUMBLOBMEDIUMBLOB
MEDIUMINTMEDIUMINT
MEDIUMTEXTMEDIUMTEXT
NUMBERNot Supported
SETSET
SMALLINTSMALLINT
TEXTTEXT
TIMETIME
TIMESTAMPTIMESTAMP
TINYBLOBTINYBLOB
TINYINTTINYINT
TINYTEXTTINYTEXT
VARBINARYVARBINARY
VARCHARVARCHAR
YEARYEAR

必要条件

必要条件说明
账号权限全量迁移:迁移库表的 SELECT 权限,information_schema SELECT 权限
增量同步:SELECT ,REPLICATION SLAVE,REPLICATION CLIENT 权限,information_schema SELECT 权限

例:grant SELECT ,REPLICATION SLAVE,REPLICATION CLIENT on testdb.* to common_user@'%'
订阅增量
  • 需要部署LogProxy组件(社区版和企业版OceanBase均有对应的组件)
  • 初始化 LogProxy 可能需要额外的访问日志账号
  • CloudCanal 订阅源端 OceanBase 增量主要与LogProxy 组件进行通讯,请确保 CanalCanal 与 LogProxy 通讯正常


例: telnet [LogProxy:ip][LogProxy:端口号]

数据源添加参数说明

项名称说明
网络地址类型分为内网地址和外网地址。一个数据源可以包含一个内网地址和一个外网地址。网络地址格式为ip地址和port。默认添加的为内网地址,需要添加外网地址可以点击右侧+号
认证方式支持选择不同的认证方式,例如有账号无密码或者无账号无密码
账号数据库服务端账号
密码数据库服务端密码
描述非必填项,填写描述信息,方便管理数据源
物理位置物理位置仅仅是一个标记,在管理多地域数据库时方便识别

数据源额外参数

参数名称说明
obLogProxyHostoblogproxy server的地址,格式为ip:port,默认端口统一为2983,如果需要订阅增量,该参数不可为空
clusterUrl可以为空,为空时订阅增量时会使用root server list,不为空时订阅增量会优先使用cluster url
rpcPortList订阅增量时,该参数不可为空,默认端口为2882。如果网络地址包含多个root server(假设为3个),此处填写格式为2882:2882:2882

常用源端任务参数

参数名称说明
filterDDL为true时会直接过滤DDL
timezoneoblogproxy默认时间都按照无时区的unix时间戳存储,该参数支持将时间类型自动做一些时区转换。默认为+08:00,即接续后的时间都会加上8个小时
clusterUrlcluster_url需要从OCP获取,obproxy client会通过cluster url定时获取最新的rs list信息
obLogProxyHostOceanBase LogProxy的Host地址
rpcPortListOceanBase的RPC端口,用于增量同步使用,支持集群模式写多个,格式为rpc_port1;rpc_port2

Tips: 所有数据源均有的通用参数配置请参考 通用参数配置

高级功能

写Kafka支持携带列类型信息

OceanBase作为源端时,写入对端Kafka时支持在topic的dbValType字段记录字段类型。CloudCanal实现全量和增量的方式不同,因此订阅全量和增量时改字段类型的值会有所差异。

全量

dbValType在全量迁移过程中,是从源端 INFORMATION_SCHEMA.COLUMNS中的column_type字段获取,该字段包含数据库类型以及其精度、长度等信息,会与源端数据库中表的原始类型定义保持一致。

增量

OceanBase增量日志中携带的列类型并不是源表中的原始类型,而是OceanBase的内部类型,其和源表原始类型的关系如下表所示。dbValType只包含类型信息,不包含长度、精度信息。

OceanBasedbValType
BIGINTbigint
BINARYbinary
BITbit
BLOBblob
BOOLEANtinyint
CHARvarchar
DATEdate
DATETIMEdatetime
DECIMALdecimal
DOUBLEdouble
ENUMenum
FLOATfloat
INTint
LONGBLOBblob
LONGTEXTclob
MEDIUMBLOBblob
MEDIUMINTmediumint
MEDIUMTEXTclob
SETset
SMALLINTsmallint
TEXTclob
TIMEtime
TIMESTAMPtimestamp
TINYBLOBblob
TINYINTtinyint
TINYTEXTclob
VARBINARYbinary
VARCHARvarchar
YEARyear

参考资料

链路创建示例