之前已经问过有关如何在两个Wordpress安装之间同步文件以及数据库的问题。

对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。这样做的问题是,最终您将丢失可能在产品服务器上进行的所有更改。例如,使用量度,注释等...

考虑到这一点,我开始怀疑是否可以扩展Wordpress ORM,以便您可以生成增量然后注入那些进入产品站点。

有没有人尝试过这个,研究它,或者有任何想法或评论?

评论

我已经研究过了,是的,但是还没完成很多。如果您可以指向其他CMS平台的概念验证,那么我相信我们可以为WordPress重新调整它。

复制怎么样?

使用mysql进行良好的复制需要某种形式的主-主复制,即PITA。如果考虑到这是介于dev和prod之间的事实,则必须延迟复制,这很可能会一直中断。

#1 楼

现实情况是,我们想要的是这样的:http://www.liquibase.org/库来跟踪,管理和应用
数据库更改。它建立在一个简单的前提下:所有数据库
更改都以易于阅读但可跟踪的形式存储并检查
到源代码管理中。不支持。通常,我们不会通过自己编写的离散脚本来修改数据库,而是使用激活的插件。我们不编写DML脚本来修改查找数据,然后将其检入源代码控制,我们在管理页面上使用UI,因此没有源代码供以后在迁移期间复制更改时使用。

但是,我们可以使用此页面上列出的一些工具来模拟其中的一部分:

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

例如,liquidbase具有diff功能,还可以选择包含对数据的更改。我们可能会将模式和数据diff输出到脚本,不包括(尽可能)排除可能包含测试数据的某些表(例如post等),然后将脚本应用于生产数据库。 /> MySQLDiff(在StackOverflow问题上进行了讨论)进行模式差异,并且作者建议mysql_coldiff用于逐表数据差异-如果java工具(liquidbase)对于您的服务器来说资源过多,则两者均在perl中实现-尽管两者本地数据库并在您的PC上运行该工具可以解决该问题...

如果我们真的想做对,应该记录与设置,选项或其他配置更改相关的所有sql,任何模式更改-并将登录的代码转换为迁移脚本以与我们的生产服务器一起使用。在服务器上播放迁移脚本,复制wordpress站点文件(不包括上载,如果适用),我们就可以了。

因此,在我看来,最好的出路是开发人员的migration-builder-plugin,该插件可以捕获所需的sql,进行存储,然后根据记录的代码生成迁移脚本,而不是构建合并数据库的方法在分期和生产之间。似乎也可以解决一个更简单的问题。

如果我们看一下@bueltge的工具挂钩调用插件的代码以获取启发,请访问:https://gist.github.com/1000143(感谢Ron Rennick通过G +指向我指向SAVEQUERIES和关机钩的方向,这使我找到了它)捕获名称:激活并配置插件XYZ

捕获状态切换-开启

...安装和配置插件XYZ

捕获状态切换-关闭

用于以下目的的导出迁移脚本:激活和配置XYZ插件

按“导出”按钮-生成带有过滤的捕获SQL的弹出文本字段-理想的是预先格式化为shell命令行调用mysql的脚本。将其复制并粘贴到您的迁移代码文件夹中,然后添加到您的源代码存储库中。迁移脚本,将生产数据库的配置与登台数据库的配置等同。具有可复制,可测试的迁移脚本的映像!

我已经恋爱了。

还有其他人吗?

评论


不错的文章。我一直在这个问题上花费很多时间,因为我一直在寻求客户的帮助。这是一个非常棘手的问题,但是我们认为降级到SQL级别可能太过“沸腾海洋”解决方案了,这意味着不可能100%地使它工作。我认为解决方案是使用“分而治之”的方法,并使用能理解WordPress结构的显式代码,并为其他任何内容提供钩子。我希望我们将来可以在某个时候公开提出可行的解决方案。

– MikeSchinkel
2011年8月5日在6:56



所以...谁想做这个?

–戴夫·基斯
13年2月8日在22:09

对于任何寻找的人来说,似乎可以将相同的想法作为插件使用:wordpress.org/plugins/query-recorder

– majick
19年2月22日在20:00

#2 楼

Database Sync WordPress插件在两台服务器之间同步数据方面做得非常好。

默认情况下,它会覆盖所有目标数据,但是我刚刚对该插件进行了一些增强,使您只能同步特定的数据库表。这可以帮助您保留不想覆盖的评论,用户和其他此类数据。

我还没有公开发布我的更改,但是如果您对副本感兴趣,请给我发电子邮件,邮件地址为simon-at-yump .com.au。如果有人发现此功能有用或有其他功能要求,请告诉我,我会做的。


更新:我也刚刚找到WP-Sync-DB插件,它是商业WP-Migrate-DB-Pro插件的分支。它做的事情非常相似,尽管可能比Database Sync更完善。

#3 楼

有专门针对此任务的相对较新的商业服务。叫做RAMP:

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

评论


该服务有一些限制,使其不适合我的用例:

– marfarma
11年8月4日在22:31

我的用例-在生产中添加内容时添加功能。 Quote:“当前不支持以下项目:设置(核心和插件设置,除非他们选择加入RAMP)” 99.99%的主题和插件选项和设置不会迁移。如果不对生产进行代码更改,则自定义帖子类型将不会迁移。无需添加自定义表及其数据。

– marfarma
2011年8月4日在22:39

该产品确实具有有效的用例-暂存内容,然后将其实时发布。不幸的是,这不是我关心的问题。返回OP,目前尚不清楚他正在处理哪个用例-因此这可能是他们商店的理想解决方案。

– marfarma
2011年8月4日在22:42