问题现象
分区表开启了 ROW MOVEMENT + 更新主键的场景下:可能出现某条数据先插入再删除的情况,造成的数据更新可能有差异。
关键诊断信息
触发条件
分区表开启了 ROW MOVEMENT + 更新主键场景下:可能出现某条数据先插入再删除的情况,造成的数据更新可能有差异。
问题原因
OceanBase 数据库发给同步软件的日志不是严格保序的(OceanBase 数据库自身的日志、完成省内的业务都没问题,只是发给同步软件的日志不保序)。
问题的风险及影响
出现某条数据先插入再删除的情况。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
解决方法及规避方式
解决方法:
推荐方案 - 业务侧规避此场景:在业务程序上进行规避这个问题。
备选方案 - OceanBase 数据库升级:需将 OceanBase 数据库从 V3.1.2(oceanbase-3.1.2-20210618150922)版本升级到 V3.2.x 的版本。
规避方式:
源业务允许的情况下,可以禁掉
ROW MOVEMENT。或者配置 OBCDC 配置项
enable_output_trans_order_by_sql_operation=1。如果 OceanBase 数据库是 V3.x 版本,需要把 OceanBase 数据库升级到 V3.2.x 版本,同时 OBCDC 版本至少 V3.2.0(oceanbase-3.2.0-20210719172300)版本(现在推荐 V3.2.4 BP8(oceanbase-3.2.4.8-108000142024041520)版本)。
如果 OceanBase 数据库是 V2.x 版本,需要把 OceanBase 数据库升级到 V2.2.76(oceanbase-2.2.76-20210206004937)及之后版本,同时 OBCDC 至少为 V2.2.77(oceanbase-2.2.77-20210508211731)版本(V2.x 系列)或者 V3.2.4 BP8(oceanbase-3.2.4.8-108000142024041520)版本(V3.x 系列)。