1.2亿数据量 , 删除到2w条后
异步的修复内存碎片失败 , 最后只能使用老办法 , rename table 了
执行方案如下 :
- 对外公告维护
- 关闭所有写入脚本和接口
- 确认待维护表无新增数据
- rename table
table_name
tonew_table_name
这一步非常快 就算有非常大的数据量更换也只用了1秒不到 - 导出从库中的
table_name
表记录, 在主库创建 新的table_name
,新创建表 子增ID + 10w 保证ID 唯一 , insert 从库数据.
为什么不使用 INSERT INTO table_name SELECT * FROM new_table_name
?
因为执行太慢了, 在维护公告之前 我就已经测试了 上面的 sql 执行时间 , 非常的漫长 还搞不定. 维护时间肯定不能等那么久. 所以采用上面的老方案 替换表从库导入.