之前有人问过有关如何在两个Wordpress安装之间同步文件和数据库的问题。
对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。这样做的问题是,您最终会丢失可能在产品服务器上进行的所有更改。例如,使用指标,评论等...
考虑到这一点,我开始怀疑是否有可能扩展Wordpress ORM,以便您可以生成增量,然后将其注入到生产站点中。
是否有人尝试过,研究过,或者有任何想法或意见?
之前有人问过有关如何在两个Wordpress安装之间同步文件和数据库的问题。
对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一台服务器。这样做的问题是,您最终会丢失可能在产品服务器上进行的所有更改。例如,使用指标,评论等...
考虑到这一点,我开始怀疑是否有可能扩展Wordpress ORM,以便您可以生成增量,然后将其注入到生产站点中。
是否有人尝试过,研究过,或者有任何想法或意见?
Answers:
现实情况是我们想要的是这样的:http : //www.liquibase.org/
Liquibase是一个开放源代码(Apache 2.0许可)的数据库独立库,用于跟踪,管理和应用数据库更改。它建立在一个简单的前提下:所有数据库更改都以人类可读但可跟踪的形式存储并检入源代码管理。
但是我们的开发过程不支持它。通常,我们不会通过自己编写的离散脚本来修改数据库,而是使用激活的插件。我们不编写DML脚本来修改查找数据,然后将其检入源代码控制,我们在管理页面上使用UI,因此没有源代码供以后在迁移期间复制更改时使用。
但是,我们可以使用页面上列出的一些工具来模拟其中的一些:
例如,液基具有差异功能,该功能还可选地包括对数据的更改。我们可以潜在地将模式和数据差异输出到脚本,不包括(尽可能)排除可能包含测试数据的某些表(例如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和关闭钩子的方向,引导我找到它)
-更改它以获取SAVEQUERIES输出 -仅在管理员状态下运行 -过滤所有选择 -将结果保存到关闭挂钩中的表中 -我们可以根据当前的操作有选择地切换输出陷阱。
例如:
捕获名称:激活并配置XYZ插件
捕获状态切换-开启
...安装并配置XYZ插件
捕获状态切换-关闭
导出迁移脚本,用于:激活和配置XYZ插件
按下Export Button(导出按钮)-产生带有过滤的捕获SQL的弹出文本字段-理想情况下预先格式化为shell脚本,并通过命令行调用mysql。将其复制并粘贴到您的迁移代码文件夹中,然后添加到您的源代码存储库中。
在工作时,请注意打开和关闭捕获,并能够生成完美的迁移脚本,以将生产数据库转换为与登台数据库等效的配置。
更好的是,您将拥有可以测试的脚本(或一系列相同的脚本)。具有可复制,可测试的迁移脚本的映像!!
我已经恋爱了。
还有谁?
该数据库同步 WordPress插件做两台服务器之间同步数据的一个伟大的工作。
默认情况下,它会覆盖所有目标数据,但是我刚刚对插件实施了一些增强功能,使您仅能同步特定的数据库表。这可以帮助您保留不想覆盖的评论,用户和其他此类数据。这会给您所需的粒度吗?
我尚未公开发布更改,但如果您对副本感兴趣,请发送电子邮件至simon-at-yump.com.au。如果有人发现此功能有用或有其他功能要求,请告诉我,我会做的。
更新:我也刚刚找到WP-Sync-DB插件,它是商业WP-Migrate-DB-Pro插件的分支。它做的事情非常相似,尽管可能比Database Sync更完善。
有专门针对此任务的相对较新的商业服务。它被称为RAMP:
http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress