线上mysql被误导入了千万级的错误数据,如何在不影响业务的情况下进行删除?

提问者:帅平 问题分类:数据库
线上mysql被误导入了千万级的错误数据,如果直接删除的话,会导致binlog超出限制,并且走索引导致长时间锁表,现在需要做删除操作,请问如何在不影响业务的情况下进行删除?
3 个回答
满天都是派星べ
满天都是派星べ
可以先把原表的数据copy到临时表,然后在临时表里面删除,然后再删除掉原表,然后把临时表rename回原始表即可。
发布于:1个月前 (04-10) IP属地:四川省
三岁就可萌了
三岁就可萌了
这里有个坑,一般使用:
create table table1 as select * from table2

的时候不会复制索引,主键,外键约束或者默认值等信息。所以需要规避掉这个坑。
所以建议不要drop原表,而是使用truncate原表,然后再把临时表清洗后的数据insert到原表即可。
发布于:1个月前 (04-10) IP属地:四川省
Missyoulonely
Missyoulonely
可以考虑无锁变更或者删除。
发布于:1个月前 (04-10) IP属地:四川省
我来回答