1

为一个项目实现 GIT 存储库,我们通过在部署的提交后挂钩上生成转储来包含数据库结构。

我想要的是一个简单的文件版本控制系统,它基于对表结构的最后更改的时间戳。

在找到这篇建议检查 MySQL 数据目录中 *.frm 文件日期的帖子后,我认为解决方案是根据最后一个日期作为生成文件的一部分来实现它。这是:

  1. 通过 ls 命令(ls -la *.frm 类型)找出数据库文件(即 /var/lib/mysql/databaseX/)的最新日期时间

  2. 将该值(最后更改的文件)与某个文件(即 /project/dump_2012102620001.sql)中的一个值进行比较,其中数字对应于最后生成的转储。

  3. 如果文件时间戳在该日期之后生成 mysqldump 命令,否则忽略,因此不会生成转储并将其作为对 GIT 的更改提交

不幸的是,我的 Linux 控制台/bash 概念还远远不够,还没有找到任何类似的脚本可以使用。

4

2 回答 2

3

您可以使用[[ file1 -ot file2 ]]来测试 file1 是否早于 file2。

last=$(ls -tr /path/to/db/files/*.frm | tail -n1)
if [[ dump -ot $last ]] ; then
    create_new_dump
fi
于 2012-10-26T17:30:29.993 回答
1

您可以通过每次使用适当的mysqldump命令转储表结构来为自己省去很多麻烦,因为这是相对轻量级的,因为它不包含表内容。去掉最上面的可变时间戳信息,和之前的文件比较。存储不同。

于 2012-10-26T17:34:31.993 回答