之前有人问过关于如何在两个Wordpress安装之间同步文件和数据库的问题。
对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。问题是,您最终会丢失可能在prod服务器上所做的任何更改。例如,使用指标、注释等。。。
考虑到这一点,我开始怀疑是否有可能扩展Wordpress ORM,以便生成Delta,然后将其注入prod站点。
有没有人尝试过,研究过,或者有什么想法或意见?
之前有人问过关于如何在两个Wordpress安装之间同步文件和数据库的问题。
对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。问题是,您最终会丢失可能在prod服务器上所做的任何更改。例如,使用指标、注释等。。。
考虑到这一点,我开始怀疑是否有可能扩展Wordpress ORM,以便生成Delta,然后将其注入prod站点。
有没有人尝试过,研究过,或者有什么想法或意见?
事实是,我们想要的是: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。&复制;将其粘贴到迁移代码文件夹中,并添加到源代码存储库中。
在工作过程中,请仔细切换捕获的开与关,这样您就能够生成完美的迁移脚本,将生产数据库转换为与临时数据库等效的配置。
更好的是,您将有一个脚本(或一系列相同的脚本)可以测试。映像具有可复制、可测试的迁移脚本!!
我已经恋爱了。
还有其他人吗?
这个Database Sync WordPress plugin 在两台服务器之间同步数据方面做得很好。
默认情况下,它会覆盖所有目标数据,但我刚刚对插件进行了一些增强,只允许同步特定的数据库表。这可以帮助您保留注释、用户和其他您不希望覆盖的此类数据。这是否为您提供了所需的粒度?
我还没有向公众发布我的更改,但如果你对副本感兴趣,请给我发一封电子邮件到Yamp的simon。com。澳大利亚。如果有人觉得这很有用或有其他功能要求,请告诉我,我会看看我能做些什么。
<小时>UPDATE: 我也刚刚找到WP-Sync-DB 插件,它是商业化的WP Migrate DB Pro插件的一个分支。它做了一件非常相似的事情,尽管可能比数据库同步更加完善。
有一个相对较新的专门用于此任务的商业服务。这叫做斜坡:
http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress
既然wp-supercache对CDN有了一些内置支持,我已经尝试使用CDN同步工具将文件初始上载到Cloudfront。但是,我在同步时出现了两组错误(我不得不使用强制上载,因为CDN同步工具认为我的所有文件都已上载)。cURL错误:无法从文件/应用程序中打开/读取本地数据(26)。但此错误实际上并没有阻止上载文件无法打开流:在/var/www/xxxxx/wp-content/plugins/cdn-sync-tool/lib/awssdk/lib/requestcore/requestcore中打开