繁体   English   中英

如果没有时间戳列而又不保留状态数据库,如何确定MySQL InnoDB表是否已被修改?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM