从库线程报错:
Worker 0 failed executing transaction 'ANONYMOUS' at master log mysql-bin.063742, end_log_pos 34381691; Error 'Duplicate key name 'source_sid'' on query. Default database: 'erp'. Query: 'alter table erp_transfer_order add index source_sid(source_sid)'
分析:查看主库的表结构与从库的表结构是否一致;
主库:
主库的表结构从库:
从库的表结构2、可以看出,从库明显是有source_sid(source_sid)的所以,所以,在这个时候,有两个方法可以解决这个问题,1、跳过这个从库的事务,2、删除从库的索引,
方案一:跳过这个事务;
先停止从库:stop slave for channel 'master-4';
跳过事务:set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
开启从库:start slave for channel 'master-4';
方案二:删除索引,然后让从库再重新执行一遍建索引的过程,我这里,因为数据量比较小(60w),所以才用这种方案去执行,因为跳过一个事务的话,很容易出现这个事务中含有很多操作。
停止从库:stop slave for channel 'master-4';
删除索引:alter table erp_transfer_order drop index source_sid;
开启从库:start slave for channel 'master-4';
网友评论