/ 数据复制服务 drs/ / / / 灾备阶段失败报错,关键词“a dml without pk write target db fail”
更新时间:2024-11-26 gmt 08:00

灾备阶段失败报错,关键词“a dml without pk write target db fail”-九游平台

场景描述

mysql为源灾备任务报错,日志界面提示:a dml without pk write target db fail。

可能原因

  • 无主键表由于缺乏行的唯一性标志,在网络不稳定情况下,无主键表数据写入时与源数据库数据不一致。
  • 源端为rds for mysql老版本(5-5.7.23),有无主键表隐藏主键的特性,导致drs任务报错update/delete没有命中。

九游平台的解决方案

  • 如果是无主键表原因,需要将无主键表修改为主键表,并重新创建drs任务完成灾备。
  • 如果源端为rds for mysql老版本(5-5.7.23),有无主键表隐藏主键的特性,请参考以下步骤处理:
    1. 使用有process权限的账号,在源端执行以下sql语句查询表信息,其中database/table为无主键表的库名与表名(如果是分区表需要用like查询)。
      select * from information_schema.innodb_sys_tables  where name = 'database/table'; 

    2. 根据1中获得的table_id,执行以下sql查询该无主键表的列信息。
      select * from information_schema.innodb_sys_columns where table_id = 44;

    3. 根据查询结果,可以看出pos为2的第三列是隐藏自增主键列。如果binlog中隐藏主键列不在最后一列,会导致drs任务同步失败。
    4. 登录rds控制台,参考或联系rds客服,升级rds任务版本。
    5. 重新创建drs任务完成灾备。

相关文档

网站地图