是否可以根据mysql表中的行的创建日期来计划删除这些行?

t3irkdon  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(251)

我有一个包含用户创建的聊天室的表。我希望我的数据库服务器自动删除1天以前的聊天室。我知道我可以手动编写查询来完成此操作,但我不知道如何使数据库服务器自行删除行。

5q4ezhmt

5q4ezhmt1#

您可以将此问题与数据库归档过程联系起来,在数据库归档过程中,您可以归档旧数据(可以是日/月/年),并且这些归档的数据可以存储到另一个表中,这有利于备份。这可以通过简单的cron作业来完成。
正如您所知,cron job是unix系统中基于时间的作业调度器,在指定的时间和日期自动运行。-https://kb.iu.edu/d/afiz
您可以按照以下步骤编写一个shell脚本,其中包含用于数据库存档的mysql查询
在同一数据库上创建存档表-用于备份
像主表一样创建表存档表;
将旧数据插入存档表,以便将来需要时可以使用它,在本例中,它将插入一天的旧数据(您可以根据需要进行更改)
insert into archive\ u table selectfrom main\ u table where created\ u at<date\ u sub(now(),interval 1 day)(插入到存档\表中,从主\表中选择);
通过运行下面的查询,从主表中删除相同的数据
从主表中删除在<date\u sub(now()-间隔1天)创建的表;
使用上层查询构建脚本文件(请参阅shell脚本语法来构建脚本)。通过运行下面的命令打开crontab列表
克朗塔布-l
并将下面的命令放入crontab列表。根据脚本文件的路径更改此命令。用于crontab guru参考和放置
0***脚本文件的cd路径和shell脚本文件的sh路径

相关问题