MySQL,有没有办法知道数据库最后一次改变/修改的时间?

MySQL,有没有办法知道数据库最后一次改变/修改的时间?

我每小时创建 5 个数据库的 MySQL 转储。其中 3 个数据库很少更改,因此为这 3 个数据库创建 MySQL 转储几乎是浪费时间和资源。

有没有办法可以检索特定数据库上次更改/更新的 unix 纪元秒数?我会将其与最新的转储文件进行比较,并且只有在有更改时才转储另一个文件。

所以再次提问:如何获取特定数据库上次更新/更改的 unix 纪元日期时间?

答案1

仅适用于 MyISAM 表

您可以针对 information_schema 表运行 MySQL 查询:

示例(将 dbname 替换为您的数据库名称):

SELECT UNIX_TIMESTAMP(MAX(UPDATE_TIME)) as last_update 
FROM information_schema.tables 
WHERE TABLE_SCHEMA='dbname' 
GROUP BY TABLE_SCHEMA;

答案2

我用:

    mysql -e "use <NAMEOFTHEDATABASE>;SELECT MAX(UPDATE_TIME) FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ;" | grep -v "\----" | grep -v "MAX(UPDATE_TIME)" | awk '{print $1}'

问候!

答案3

这并不是您正在寻找的确切答案,但我认为这就是您所需要的:启用二进制日志,备份 binlog并且每周左右创建一次完整的转储。

答案4

我这样做的方式不是自动化的:你仍然必须读取修改时间,但FWIW......

SELECT TABLE_SCHEMA, UNIX_TIMESTAMP(MAX(UPDATE_TIME)) as last_update  FROM information_schema.tables  WHERE TABLE_SCHEMA in ('shovel', 'sleek', 'whiskerando', 'pickle')  GROUP BY
TABLE_SCHEMA;

这将列出括号中显示的四个表的修改时间。

相关内容