我的两分钱:我认为这不是一个好主意。GIT做类似“在不同的时间点存储一组文件的快照”之类的事情,因此您可以完美地使用GIT之类的东西,但这并不意味着您应该这样做。GIT旨在存储源代码,因此您将缺少其大部分功能,而为了一点方便,您将要牺牲很多性能。
让我假设您考虑此问题的主要原因是“保持数据和代码的同步副本”,这意味着您担心代码的2.0版需要与1.0版不同的数据库架构。 。一个更简单的解决方案是将数据库模式(作为带有CREATE
语句的SQL脚本集)与源代码一起存储在Git存储库中。然后,安装过程的一部分将是在以前安装的数据库服务器上执行这些脚本。
这些-d表的实际内容CREATE
与源代码的版本无关。想象一下,您在服务器A和服务器B上安装了版本1.0的软件,这些文件在不同公司的不同团队中使用。几周后,即使架构完全相同,表的内容也会有很大不同。
由于您要备份数据库的内容,因此建议您使用一个备份脚本,该脚本用该转储所属的软件的当前版本标记该备份转储。该脚本应位于GIT存储库中(以便它可以访问源代码版本字符串),但是转储本身不属于版本控制系统。
编辑:
阅读激发问题的原始帖子之后,我发现这是一个更加可疑的想法。关键是该mysqldump
命令将数据库的当前状态转换为一系列SQL INSERT
语句,GIT可以对它们进行比较以仅获取更新的表行。
该mysqldump
部分很合理,因为这是MySQL文档中列出的备份方法之一。GIT部分是作者未能注意到数据库服务器保留事务日志以便从崩溃中恢复的地方,包括MySQL。它使用此日志,不GIT,你应该为你的数据库的增量备份。首先,最重要的是,您可以在恢复后旋转或刷新日志,而不是将GIT信息库膨胀到无限甚至更大的优点。