暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CloudCanal订阅企业版OceanBase攻略

ClouGence 2022-12-30
165

简介

CloudCanal 从2.3.1.1版本开始支持OceanBase企业版源端的订阅。本文将介绍如何使用CloudCanal构建一条OceanBase到OceanBase的迁移同步链路(MySQL兼容模式)。

技术点

同时兼容社区版和企业版

OceanBase增量变更的订阅依赖其官方提供的日志代理组件oblogproxy。只要部署对应版本的oblogproxy server,使用同一套CloudCanal环境既可以订阅企业版OceanBase也可以订阅社区版OceanBase。

CloudCanal使用的oblogproxy client同时兼容企业版和社区版的订阅。

支持集群模式和cluster url订阅

从2.3.1.1开始,CloudCanal支持订阅集群,添加数据源时填写root server list或者cluster url即可。社区版需要部署config server才可以使用cluster url,而企业版需要部署OCP从OCP的控制台获取cluster url。

使用cluster url添加数据源的好处是有配置中心自动完成服务发现,当OceanBase集群有新的节点或者ip发生变化时通过cluster url可以自动感知。如果使用root server list则无法自动感知OceanBase集群内节点的变化。当节点发生变化时,需要手动调整CloudCanal任务的配置。

获取root server list和cluster url可以在登入OceanBase后采用如下命令获取:

## 使用 sys 用户执行时,返回的 value 字段即为该值。 
show parameters like 'obconfig_url' 
## 使用 sys 用户执行时,返回的 value 字段即为该值。
show parameters like 'rootservice_list' 

支持常用DDL实时同步

OceanBase源端支持同步到多个异构数据源对端,并且均支持常用DDL的同步,例如新增列、删除列、新增和删除索引等。

编辑订阅功能

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

支持的能力

支持的OceanBase版本

3.0、3.1、3.2、4.0

OceanBase源端支持的对端

MySQL、StarRocks、OceanBase、Kafka

前置准备

部署增量订阅组件oblogproxy

社区版OceanBase请部署社区版oblogproxy。企业版OceanBase请联系OceanBase官方人员协助部署企业版oblogproxy server。在下文的例子中,我们使用的为企业版oblogproxy,版本为2.1.2。

企业版用户也尽量使用最新的稳定版oblogproxy server,避免一些低版本的bug影响增量订阅。

准备好企业版OceanBase环境和测试数据

企业版OceanBase请联系OceanBase官方人员协助部署,并自行准备好测试数据。

操作示例

添加数据源

点击 数据源管理 -> 新增数据源 选择自建数据库中的OceanBase

  • • 网络地址:格式为ip1:sql_port1;ip2:sql_port2。如果多个root server则用英文分号分隔。支持填写obproxy地址,格式为proxy_ip:proxy_port

  • • 额外参数

    • • obLogProxyHost: oblogproxy server的地址,格式为ip:port,默认端口统一为2983,如果需要订阅增量,该参数不可为空

    • • clusterUrl: 可以为空,为空时订阅增量时会使用root server list,不为空时订阅增量会优先使用cluster url

    • • rpcPortList: 订阅增量时,该参数不可为空,默认端口为2882。如果网络地址包含多个root server(假设为3个),此处填写格式为2882:2882:2882


创建任务

  • • 选择 任务管理 -> 创建任务

  • • 第一步 配置源端和目标端,测试连通性通过后选择需要订阅的源端库和目标端 并选择订阅和映射的库

  • • 源端勾选高级配置可以设置OceanBase的租户,默认为sys。CloudCanal的一个任务只支持订阅属于一个租户下的表。此处请设置需要订阅的表所属的租户。


  • • 第二步 选择任务类型和规格,一般需要同时进行全量初始化和长周期增量同步可以按照如图的配置。


  • • 第三步 表和Action过滤,在第三步用户可以勾选自己需要订阅的表以及事件类型


  • • 第四步 数据处理:在这一步用户可以进行列裁剪和映射;如果有自定义实时处理数据的需求,在这一步也可以上传自定义代码进行自定义处理。自定义代码处理可以参考样例工程


  • • 第五步 确认配置:这一步用户可以确认任务的完整配置,确认无误后点击创建任务即可完成任务创建的流程。


任务运行

任务创建完毕后会自动开始表结构迁移、全量迁移和增量同步


老版本升级元数据订正

新版本CloudCanal对OceanBase数据源的配置有一些调整,如果已经使用老版本的CloudCanal添加过OceanBase数据源,需要做一些元数据订正才可以正常创建任务。

订正数据源配置

新版CloudCanal在数据源层面主要有如下两项调整:

  • • 支持填写集群模式的host: 原有OceanBase数据源的网络地址需要替换成新的格式,即ip:sql_port,或者直接填写obproxy的ip和port。点击 数据源管理->更多 修改内网/外网地址 修改


  • • 支持了独立的数据源额外配置参数,点击 数据源管理->更多->查看配置 修改。补充obLogProxyHost、rpcPortList等信息


  • • 完成以上配置后,新创建的任务即可正常进行全量迁移和增量实时同步。

订正任务配置

方法一:创建相似任务重建历史任务(推荐)

历史增量任务直接修改配置相对比较繁琐,推荐在修改数据源配置后直接利用创建相似任务的功能重建历史任务。

  • • 任务管理点击任务进入任务详情页,选择 功能列表->创建相似任务

  • • 创建相似任务,不勾选自动启动,不勾选全量初始化,然后点击下一步直到完成相似任务的创建



  • • 停止老的增量任务,并且记录其位点时间戳T1


  • • 对通过相似任务创建出来的任务在任务详情页选择 回溯位点,设置一个比之前记录的时间戳T1更早的一个时间,启动任务,即可将老的OceanBase源端历史任务升级成支持新版代码的任务

方法二:修改任务配置

历史长周期运行的OceanBase源端增量同步任务需要订正配置避免由于升级版本后重启任务产生报错。

当更新完新版本的CloudCanal后,历史OceanBase源端增量任务只要不重启是不会报错的,此时可以进行任务配置调整,使得其重启后也可正常运行。

  • • 任务管理点击任务进入任务详情页,选择 功能列表->参数修改->源端数据配置


  • • 新版CloudCanal针对OceanBase源端新增了以下参数,补全新增参数的值


  •     新增参数     填写值
        workingMode    storage
        timezone    非跨时区情况设置+8:00
        clusterUrl    如果有configServer或者OCP则填写对应地址,格式为ip:port
        obLogProxyHost    填写oblogproxy server的地址,格式为ip:port,默认端口为2983
        rpcPortList    OceanBase的RPC PORT,默认为2882,如果使用多个root server,则格式为2882;2882;2882

FAQ

问:报错message: "Failed to parse configuration"

答:出现该报错应该是添加数据源时没有正确配置host、rpcPortList、logproxy host等地址引起。请检查相关配置是否正确配置。

问:报错message: "Failed to auth"

答:如果oblogproxy server开启了鉴权,CloudCanal需确保配置的租户有相关库表的权限。默认情况下CloudCanal使用的租户名为SYS,这可能与用户实际订阅的库表所属的租户不同。请在 任务详情->功能列表->修改参数 搜索obTenant参数设置正确的值。


文章转载自ClouGence,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论