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

Zac*_*ell 60 mysql git version-control

我是一名WordPress设计师/开发人员,他越来越多地参与使用版本控制,特别是Git,尽管我在某些项目中使用了SVN.我目前正在使用Beanstalk作为我的远程仓库.

将所有WordPress文件添加到我的仓库是没有问题的,如果我想知道我可以.gitignore wp-config文件,但由于我是目前唯一的开发人员,而且这些项目是封闭源代码,它确实使得没什么感觉.

WordPress在很大程度上依赖于数据库,就像任何CMS一样,保留文本内容和许多设置,具体取决于我正在使用的特定插件/主题配置.我想知道在数据库上使用版本控制的最佳方法是什么,如果可能的话.我想我可以做一个SQL转储,虽然我的MySQL服务器在Windows上运行(读作:我不知道该怎么做),然后将SQL转储添加到我的存储库.但是当我推送一些东西时,这会带来巨大的安全威胁.

有这样做的公认做法吗?

Kev*_*udé 21

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

mysqldump是一个合适的程序来帮助你做到这一点.虽然它并不完美.如果有任何事情干扰了项目的序列化顺序(例如,由于创建新表格等),那么人工中断将进入差异.这将降低存储效率.您可以编写一个自定义序列化程序来仅序列化更改 - 但是您正在进行git已经擅长的艰苦工作.只需使用sql转储.

话虽这么说,你想要做的不是开发人员在谈论将数据库放入git时通常意味着什么.例如,如果您阅读@eggyal发布的链接(链接到编码错误),您将看到实际放置在git中的是生成初始数据库所需的脚本.可能还有其他脚本,例如用干净状态填充数据库数据的脚本,或者用测试数据填充它.所有这些sql脚本都是文本文件,与mysqldump可以获得的sql转储格式几乎相同.所以没有理由不能用你的日常数据这样做.

  • 对于大多数企业应用程序,只需将生成数据库所需的脚本置于版本控制之下即可.但是对于像WordPress这样的内容管理系统,数据库中的很多东西都是有效的代码和配置,而不是最终用户数据.代码和配置需要在版本控制之下,即使它们作为数据存储在SQL表的行中也是如此.WordPress并不能让你轻松. (12认同)

Kev*_*vin 9

MySQL和MongoDB等版本控制数据库可用的软件不多.

但其中一个正在开发中,测试版即将推出.查看Klonio - 数据库的版本控制


aba*_*tra 5

文章如何使用版本控制同步本地和远程WordPress博客提供了有关如何使用Mercurial在WordPress博客的两个实例(开发,生产)之间自动同步的建议.提到对于这种情况,Git和Mercurial非常相似.

这里有趣的是步骤4(同步数据库).

数据库内容将导出到由修订控件跟踪的文件中.每次我们提取更改时,数据库内容都将被此文件替换,从而使我们的数据库保持最新状态.

然后,它详细阐述了冲突和作业的脚本部分.

如果您不熟悉Mercurial中版本控制教程.