OMS 全量+增量同步,表的全量数据同步被跳过

【 使用环境 】生产环境
【 OB or 其他组件 】

【 使用版本 】
ob 4.2.1
oms
版本号: 4.2.3_CE

【问题描述】
ob->mysql同步,
新建表以后,执行全量+增量同步,全量阶段耗时 17秒,直接进步增量模式,
上游OB中查询表有2619202704行数据
全量数据丢失

预检查

全量迁移

增量同步

正向切换

状态:已完成

启动时间:2024-06-13 13:18:19

结束时间:2024-06-13 13:18:36

总计耗时:17 秒

收起

进度:100%

RPS:0 | 0

实时流量:0 KB/s | 0 KB/s

表对象

全量迁移性能

表schema

CREATE TABLE fulfil_execute_order (
_hd_shard varchar(128) NOT NULL DEFAULT ‘’ COMMENT ‘shard info’,
id bigint(20) unsigned NOT NULL,
code varchar(128) DEFAULT NULL,
status int(10) unsigned DEFAULT NULL,
merchant_name varchar(100) DEFAULT NULL,
merchant_id bigint(20) unsigned DEFAULT NULL,
sender_id bigint(20) unsigned DEFAULT NULL,
sender_address varchar(4096) DEFAULT NULL,
warehouse_id bigint(20) DEFAULT NULL,
warehouse_name varchar(50) DEFAULT NULL,
receiver_id bigint(20) unsigned DEFAULT NULL,
receiver_address varchar(4096) DEFAULT NULL,
waybill_code varchar(128) DEFAULT NULL,
pack_no varchar(100) DEFAULT NULL,
express_company_code varchar(128) DEFAULT NULL,
package_weight bigint(20) DEFAULT NULL,
express_company_name varchar(100) DEFAULT NULL,
valid_status int(10) DEFAULT NULL,
ext_field varchar(4096) DEFAULT NULL,
version bigint(10) unsigned DEFAULT NULL,
create_time bigint(20) DEFAULT NULL,
update_time bigint(20) DEFAULT NULL,
source_order_code varchar(128) DEFAULT NULL,
source_order_type int(10) unsigned DEFAULT NULL,
source_order_channel int(10) unsigned DEFAULT NULL,
delivery_time bigint(20) DEFAULT NULL,
collect_time bigint(20) DEFAULT NULL,
sign_time bigint(20) DEFAULT NULL,
execute_exception int(10) DEFAULT NULL,
biz_type int(10) DEFAULT NULL,
PRIMARY KEY (id, _hd_shard),
KEY uniq_source_code_type_channel (source_order_code, source_order_type, source_order_channel) BLOCK_SIZE 16384 LOCAL,
KEY idx_code (code) BLOCK_SIZE 16384 LOCAL,
KEY idx_waybill_code_express_company (waybill_code, express_company_code) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
partition by hash(id)
(partition p0,
partition p1,
partition p2,
partition p3,
partition p4,
partition p5,
partition p6,
partition p7,
partition p8,
partition p9,
partition p10,
partition p11,
partition p12,
partition p13,
partition p14,
partition p15,
partition p16,
partition p17,
partition p18,
partition p19,
partition p20,
partition p21,
partition p22,
partition p23,
partition p24,
partition p25,
partition p26,
partition p27,
partition p28,
partition p29,
partition p30,
partition p31)

【复现路径】
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

可以提供下相关日志:参考 OMS 日志排查

store.log (348 字节)
cdc.log1.tar.gz (8.7 MB)
cdc.log2.tar.gz (2.7 MB)
congo_0.log (17.1 KB)

全量页面截图看一下

下面没有具体同步的表吗?

没有,是空的

查看组件监控-更新,截图看一下whitcondition配置

到全量运行目录/home/ds/run/组件id/logs, 下面的connector.log传一下

connector.log (141.3 KB)


看一下是不是没有给oms迁移用户授权

是root用户,不存在这种情况,之前同步了一整个库,只有这一张表没有全量同步,单独把这张表拿出来也不行。

日志中上面那条查询sql执行一下看看

gifshow delivery_order 17398033 utf8mb4_general_ci InnoDB
gifshow delivery_order_detail 69350379 utf8mb4_general_ci InnoDB
gifshow execute_order_sub_order_relation 9300382 utf8mb4_general_ci InnoDB
gifshow expense_order 260961 utf8mb4_general_ci InnoDB
gifshow fulfil_order 6270257342 utf8mb4_general_ci InnoDB
gifshow fulfil_order_ext 4385979722 utf8mb4_general_ci InnoDB
gifshow fulfil_order_sku 5687985319 utf8mb4_general_ci InnoDB
gifshow fund_execute_sub_order 28605 utf8mb4_general_ci InnoDB
gifshow fulfil_execute_order 2219782937 utf8mb4_general_ci InnoDB
gifshow fulfil_execute_order 428363500 utf8mb4_general_ci InnoDB
gifshow inbound_execute_order 0 utf8mb4_general_ci InnoDB
gifshow outbound_execute_order 0 utf8mb4_general_ci InnoDB
gifshow execute_order_relation 0 utf8mb4_general_ci InnoDB
gifshow fulfil_order_mas_relation 2899717288 utf8mb4_general_ci InnoDB

元数据中有重复的情况了,这表是如何操作的?

正常创建写入的,没有修改过元数据表

select * from information_schema.tables where table_name like ‘%fulfil_execute_order%’;

def gifshow fulfil_execute_order BASE TABLE InnoDB DYNAMIC 2219782937 1907 1792488243200 2024-02-19 16:56:57 2024-02-19 19:59:54
def gifshow fulfil_execute_order BASE TABLE InnoDB DYNAMIC 428363500 1373 210245779456 2024-02-19 16:56:57 2024-02-19 19:59:54

这是observer的bug,可以通过下面步骤解决:
手动删除 __all_table_stat/__all_column_stat 中不符合预期的行(分区表不应该存在 table_id=partition_id=该表id 的记录)

  1. 登录到 sys 租户上
  2. 切到用户租户:alter system change tenant 租户名
  3. 删内部统计信息的行
    delete from __all_table_stat where table_id=partition_id and table_id=分区表table_id;
    delete from __all_column_stat where table_id=partition_id and table_id=分区表table_id;
1 个赞