[英]How to determine if a MySQL InnoDB table has been modified if there are no timestamp columns, without keeping a state database?
我正在尝试实现一个增量备份过程,该过程仅转储和备份MySQL数据库中最近24小时内已修改的表。 我可以查看/ var / lib / mysql / DBNAME /下的.MYD和.MYI文件的修改时间,以确定MyISAM表是否已被修改,但是InnoDB表(尚未设置为使用它们的表)自己的数据文件)没有“暴露于”文件系统的唯一文件,我可以检查该文件的修改时间。 这些InnoDB表中的一些表非常庞大(超过1亿行),但是很少对其进行更新/添加,例如每月更新两次或三次。 如果不想更改任何数据,我不想浪费时间/空间每天将这些表用于备份。
由于数据库和表的性质(某些数据库是临时的/临时的,有些具有静态模式,因此我无法预测某个表是否具有时间戳列,如果有的话,其名称是什么),则无法查询这些表自己确定它们是否最近被修改。
MySQL是否有内置的“表修改时间”可以通过查询内置变量/表来公开?
我们所有的MySQL服务器都使用5.1或更高版本。
如果您可以使用information_schema数据库,则可以获取最近更新的表的列表,如下所示:
SELECT table_schema, table_name, update_time
FROM information_schema.`TABLES`
WHERE update_time > DATE_SUB(NOW(), INTERVAL 1 DAY);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.