对于存在Y天的数据,希望每X天将数据从表A移动到历史表B,然后从历史表B中删除存在时间超过Z天的数据。
只是在探索不同的方法来实现这一点。因此,任何建议都将不胜感激。
变量X-7天Y-60天z-365天的示例
谢谢
发布于 2009-04-30 17:14:49
CREATE PROCEDURE prc_clean_tables (Y INT, Z INT)
BEGIN
BEGIN TRANSACTION;
DECLARE _now DATETIME;
SET _now := NOW();
INSERT
INTO b
SELECT *
FROM a
WHERE timestamp < _now - INTERVAL Y DAY;
FOR UPDATE;
DELETE
FROM a
WHERE timestamp < _now - INTERVAL Y DAY;
DELETE
FROM b
WHERE timestamp < _now - INTERVAL Z DAY;
COMMIT;
END发布于 2009-04-30 17:29:29
这看起来很简单。
您希望每晚执行一个cron作业来运行脚本。
#crontab -e
50 11 * * * $HOME/scripts/MyWeeklyArchive.sh脚本文件本身也非常简单。我们将只使用mysqldump和Now()函数;
#! /bin/bash
/usr/bin/mysqldump -uUser -pPassword Current_DB Table --where='date < NOW() - INTERVAL 7 DAY' | /usr/bin/mysql -uUser -pPassword archive_DB您可以只将该行包含在cron文件中,但出于可伸缩性等考虑,我建议将其设置为脚本文件。
发布于 2009-04-30 19:03:50
如果你使用的是cron 5.1,你也许可以使用事件调度程序,而不是MySQL。我没有使用过它,但我在SQL Server中使用过类似的东西。
https://stackoverflow.com/questions/808039
复制相似问题