我每小时创建 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;
这将列出括号中显示的四个表的修改时间。