基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
增量同步无主键表 where 条件过多报错 Invalid argument
更新时间:2023-11-16 04:11
本文为您介绍增量同步无主键表 where 条件过多报错 Invalid argument 的原因和解决方法。
问题描述
无主键表的 where 条件过多的情况下,增量同步步骤报错 Invalid argument,table:{tableName},db:{dbName}。
适用场景
MySQL 数据库无主键至 OceanBase 数据库 MySQL 的正向增量同步。
写入端为 OceanBase 数据库的无主键表反向增量同步。
适用版本
适用于 OceanBase 迁移服务(OceanBase Migration Service,OMS)全部版本。
可能原因
无主键同步的过程中,执行 UPDATE 或 DELETE 会匹配全列。如果 OceanBase 数据库的 where 条件中包含的列过多(超过 64),则会报错。
您可以根据报错信息中的数据库和表信息,查询写入端的表结构。如果是无主键表,且字段的个数超过 64,请根据《解决方法》模块的操作进行处理。
解决方法
该问题有以下三种解决方法,您可以根据实际情况进行选择。
修改无主键表的结构,操作如下:
实际业务需求允许的情况下,在写入端的无主键表中添加主键或唯一键。
完成主键或唯一键的添加后,单击 OMS 控制台左侧导航栏的 数据迁移。
在 迁移项目列表 页面,单击目标数据迁移项目后的 恢复 即可进行重试。
您也可以单击目标数据迁移项目的名称,进入详情页面,单击右上角的 恢复。
移除报错的表,操作如下:
进入数据迁移项目的详情页面。
登录 OMS 控制台。
在左侧导航栏,单击 数据迁移。
在 迁移项目列表 页面,单机目标数据迁移项目的名称,进入详情页面。
在目标项目的详情页面,单击右上角的 查看对象。

在 查看对象 对话框,单击 修改对象 > 减少对象。

在 减少对象 对话框的右侧 目标端对象 区域,鼠标悬停至报错的表,单击 移除。

在 减少对象 对话框,单击 移除。
在弹出框中确认需要移除的对象无误后,单击 确定。
返回目标项目的详情页面,单击右上角的 恢复。
将报错的表添加至黑名单,操作如下:
进入目标项目的详情页面。
在目标项目的详情页面,单击右上角的 查看组件监控。
在左侧导航栏,单击 运维监控 > 组件。
单击 Incr-Sync 增量同步组件 后的 更新。
在 更新配置 对话框,鼠标悬停至
root>condition下的参数blackCondition,单击参数配置后显示的编辑图标。
在文本框中输入修改的参数值后,单击确认图标。

在 更新配置 对话框,单击右下角的 确定。