更新时间: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),有无主键表隐藏主键的特性,请参考以下步骤处理:
- 使用有process权限的账号,在源端执行以下sql语句查询表信息,其中database/table为无主键表的库名与表名(如果是分区表需要用like查询)。
select * from information_schema.innodb_sys_tables where name = 'database/table';
- 根据1中获得的table_id,执行以下sql查询该无主键表的列信息。
select * from information_schema.innodb_sys_columns where table_id = 44;
- 根据查询结果,可以看出pos为2的第三列是隐藏自增主键列。如果binlog中隐藏主键列不在最后一列,会导致drs任务同步失败。
- 登录rds控制台,参考或联系rds客服,升级rds任务版本。
- 重新创建drs任务完成灾备。
- 使用有process权限的账号,在源端执行以下sql语句查询表信息,其中database/table为无主键表的库名与表名(如果是分区表需要用like查询)。
父主题:
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨