UNIQUE KEY模型数据丢失

Viewed 78

版本;2.0.3
数据通过flink-cdc从MYSQL同步的关系表。
表结构如下:
CREATE TABLE ac_cu_permission_account (
PERMISSION_ID bigint(20) NULL,
ACCOUNT_ID bigint(20) NULL
) ENGINE=OLAP
UNIQUE KEY(PERMISSION_ID, ACCOUNT_ID)
COMMENT 'OLAP'
DISTRIBUTED BY HASH(PERMISSION_ID, ACCOUNT_ID) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"is_being_synced" = "false",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false",
"enable_single_replica_compaction" = "false"
);
同步后表中数据count()为83条,大概两天左右数据count()会变成到72条。期间排查过没有业务库操作,没有数据变更同步过来。重新同步后还是会复现。怀疑是不是内部什么机制导致的。难道是UNIQUE KEY不能只设置key,没有value吗?

2 Answers

问题原因:vertical compaction 分组的逻辑在只有key列,没有value列的时候有问题,会导致key column group的最后一列不是delete sign。而现在的代码逻辑里,认为key group 的最后一列是delete sign。这导致了vertical compaction的时候,错误的删除了数据

解决方案:

  1. 在be.conf 加上enable_vertical_compaction = false,重启be
  2. 升级到2.0.14,已经在这个pr修复了:https://github.com/apache/doris/pull/32896

重新同步还是会复现:83条 -> 72条?

为更具体地了解问题(处理后会更新回帖),可以➕一下W:yz-jayhua