MySQL大表备份
小于 1 分钟
MySQL大表备份
场景描述,目前由于有张表数据量过大,导致已经影响正常使用,现在考虑创建历史表,原表只保留10天的数据,通过数据库的
事件每天凌晨1点执行迁移
解决思路
- 给
ROUND_TIME创建索引【目前是根据时间字段去进行迁移的】 - 创建错误日志表【记录每次执行的结果,方便排查问题】
- 创建存储过程
- 测试
- 模拟异常情况执行
具体实现
1.
- 执行存储过程
CALL move_round_record_data();
-- 检查原表是否残留超期数据
SELECT COUNT(*)
FROM od_round_record
WHERE ROUND_TIME < CURDATE() - INTERVAL 10 DAY;
-- 检查历史表数据量
SELECT COUNT(*) FROM OD_ROUND_RECORD_HIS;