开发人员和生产人员之间的WordPress数据库同步

时间:2011-07-28 作者:jonathanserafini

之前有人问过关于如何在两个Wordpress安装之间同步文件和数据库的问题。

对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。问题是,您最终会丢失可能在prod服务器上所做的任何更改。例如,使用指标、注释等。。。

考虑到这一点,我开始怀疑是否有可能扩展Wordpress ORM,以便生成Delta,然后将其注入prod站点。

有没有人尝试过,研究过,或者有什么想法或意见?

3 个回复
最合适的回答,由SO网友:marfarma 整理而成

事实是,我们想要的是:http://www.liquibase.org/

Liquibase是一个开源(Apache 2.0许可)的独立于数据库的库,用于跟踪、管理和应用数据库更改。它建立在一个简单的前提上:所有数据库更改都以可读但可跟踪的形式存储,并检入源代码管理。

然而,我们的开发过程不支持它。我们通常不通过自己编写的离散脚本修改数据库,而是使用激活的插件。我们不编写DML脚本来修改查找数据,然后将其签入源代码控制,我们在管理页面上使用UI,因此没有源代码供以后在迁移期间复制该更改时使用。

但是,我们可以使用本页列出的一些工具来模拟其中的一些:

https://stackoverflow.com/q/225772/149060

例如,liquidbase有一个diff特性,还可以选择包括对数据的更改。我们可以潜在地将模式和数据差异输出到脚本,排除(尽可能)可能包含测试数据的某些表(即post等),然后将脚本应用到生产数据库。

MySQLDiff(讨论了StackOverflow问题)进行模式差异,作者建议mysql_coldiff 对于表级数据差异,如果java工具(liquidbase)对服务器来说资源太多,则两者都是用perl实现的,尽管将这两个数据库都本地化并在PC上运行该工具可以解决这个问题。。。

如果我们真的想做得对,我们应该记录与设置、选项或其他配置更改以及任何架构更改相关的任何sql,并将记录的代码转换为迁移脚本,以便在生产服务器上运行。在服务器上播放迁移脚本,复制wordpress站点文件(不包括上传,如果适用),我们就成功了。

因此,在我看来,最好的解决方法是开发人员的迁移生成器插件,它可以捕获我们需要的sql,存储它,然后根据记录的代码生成迁移脚本,而不是构建一种在暂存和生产之间合并数据库的方法。似乎也是一个更简单的问题。

如果我们看一下@bueltge的插入钩子调用插件的代码,可以从中获得灵感:https://gist.github.com/1000143 (感谢Ron Rennick通过G+为我指明了SAVEQUERIES和关机挂钩的方向,这让我找到了它)

-- alter it to get the SAVEQUERIES output instead 
-- only run while in admin 
-- filter out all selects 
-- save results out to table in the shutdown hook 
-- we could selectively toggle output trapping based on what we were doing at the moment.  
例如:

捕获名称:激活(&A);配置插件XYZ

捕获状态切换-打开

。。。安装和配置插件XYZ

捕获状态切换-关闭

导出迁移脚本:激活(&A);配置插件XYZ

按Export按钮——生成一个带有过滤后的陷阱SQL的弹出文本字段——理想情况下,预先格式化为shell脚本,并通过命令行调用mysql。&复制;将其粘贴到迁移代码文件夹中,并添加到源代码存储库中。

在工作过程中,请仔细切换捕获的开与关,这样您就能够生成完美的迁移脚本,将生产数据库转换为与临时数据库等效的配置。

更好的是,您将有一个脚本(或一系列相同的脚本)可以测试。映像具有可复制、可测试的迁移脚本!!

我已经恋爱了。

还有其他人吗?

SO网友:Simon East

这个Database Sync WordPress plugin 在两台服务器之间同步数据方面做得很好。

默认情况下,它会覆盖所有目标数据,但我刚刚对插件进行了一些增强,只允许同步特定的数据库表。这可以帮助您保留注释、用户和其他您不希望覆盖的此类数据。这是否为您提供了所需的粒度?

我还没有向公众发布我的更改,但如果你对副本感兴趣,请给我发一封电子邮件到Yamp的simon。com。澳大利亚。如果有人觉得这很有用或有其他功能要求,请告诉我,我会看看我能做些什么。

<小时>UPDATE: 我也刚刚找到WP-Sync-DB 插件,它是商业化的WP Migrate DB Pro插件的一个分支。它做了一件非常相似的事情,尽管可能比数据库同步更加完善。

SO网友:scribu

有一个相对较新的专门用于此任务的商业服务。这叫做斜坡:

http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress

结束

相关推荐

使用CDN Sync工具插件时出错

既然wp-supercache对CDN有了一些内置支持,我已经尝试使用CDN同步工具将文件初始上载到Cloudfront。但是,我在同步时出现了两组错误(我不得不使用强制上载,因为CDN同步工具认为我的所有文件都已上载)。cURL错误:无法从文件/应用程序中打开/读取本地数据(26)。但此错误实际上并没有阻止上载文件无法打开流:在/var/www/xxxxx/wp-content/plugins/cdn-sync-tool/lib/awssdk/lib/requestcore/requestcore中打开