文档首页/
    
      
      数据复制服务 DRS/
      
      
        
        
        故障排除/
        
        
        失败案例/
        
        
        MySQL->MySQL实时迁移和同步/
        
      
      全量或增量阶段失败报错,关键词“Duplicate entry *** for key 'PRIMARY'”
    
  
  
    
        更新时间:2024-11-29 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
全量或增量阶段失败报错,关键词“Duplicate entry *** for key 'PRIMARY'”
场景描述
全量或增量阶段,DRS迁移或同步任务报错,日志提示信息:service CAPTURER failed, cause by: Duplicate entry '120' for key 'PRIMARY'.
可能原因
- 源库binlog_format格式没有设置ROW。
- 源库binlog_format格式设置ROW后没有立即生效。
解决方案
- 通过MySQL官方客户端或者其它工具登录源数据库。
- 在源数据库上执行全局参数设置命令。
    
    set global binlog_format = ROW; 
- 在源数据库上执行如下命令确认上面操作已执行成功。
    
    select @@global.binlog_format; 
- 您可以通过如下两种方式确保修改后的源库binlog_format格式立即生效。
    
    方法一: - 选择一个非业务的时间段,中断当前数据库上的所有业务连接。
      - 通过如下命令查询当前数据库上的所有业务连接(所有的binlog Dump连接及当前连接除外)。
        show processlist; 
- 中断上面查出的所有业务连接。
   在上述操作未结束之前,请不要创建或者启动迁移任务,否则会导致数据不一致。 
- 通过如下命令查询当前数据库上的所有业务连接(所有的binlog Dump连接及当前连接除外)。
        
- 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。
      binlog_format=ROW 
 方法二: - 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。
      binlog_format=ROW 
- 确保上述配置参数binlog_format添加或修改成功后,选择一个非业务时间段,重启源数据库即可。
 
- 选择一个非业务的时间段,中断当前数据库上的所有业务连接。
      
   父主题: MySQL->MySQL实时迁移和同步
  
  
    