小编典典

在MySQL数据库上使用版本控制(Git)

mysql

我是一名WordPress设计人员/开发人员,尽管在某些项目中确实使用SVN,但他越来越多地参与使用版本控制,尤其是Git。我当前正在将Beanstalk用于我的远程仓库。

将所有WordPress文件添加到我的仓库中都没问题,如果我想知道可以.gitignore wp-
config文件,但是由于我是目前唯一的开发人员,而且这些项目都是封闭源代码,所以的确一点意义。

就像任何CMS一样,WordPress高度依赖数据库来保留文本内容以及许多设置,具体取决于我使用的特定插件/主题配置。我想知道,即使有可能,在数据库上使用版本控制的最佳方法是什么。我想我可以执行SQL转储,尽管我的MySQL服务器在Windows上运行(读为:我不知道如何做),然后将SQL转储添加到我的存储库中。但是,当我实时发布某些内容时,会带来巨大的安全威胁。

有接受的做法吗?


阅读 1566

收藏
2020-05-17

共1个答案

小编典典

您可以在git存储库中备份数据库。当然,如果您以二进制形式将数据放入git,您将失去所有git使用diff(更改)有效存储数据的能力。因此,最佳的最佳做法是:以文本序列化格式存储数据。

mysqldump是一个合适的程序,可以帮助您执行此操作。虽然这不是完美的。如果有什么干扰项目的序列化顺序(例如,由于创建新表等),则人为的中断将进入差异。这将降低存储效率。您可以编写一个自定义的序列化程序来仅序列化更改-
但是,您正在做git已经很擅长的艰苦工作。只需使用sql dump。

话虽这么说,但您所要做的并不是开发人员在谈论将数据库放入git时通常的含义。例如,如果您阅读@eggyal发布的链接(指向
encodinghorror的链接),您将看到git中实际放置的是生成初始数据库所需的脚本。可能还有其他脚本,例如使用干净状态填充数据库数据或使用测试数据填充脚本的脚本。所有这些sql脚本都是文本文件,几乎与从mysqldump获得的sql
dump格式相同。因此,没有理由您也无法对日常数据进行同样的处理。

2020-05-17