问题描述
之前已经询问过如何同步文件以及两个 Wordpress 安装之间的数据库。
对于数据库级别,答案通常是基本上转储一个数据库并将其插入另一个服务器。这样做的问题是您最终会丢失在 prod 服务器上可能做出的任何更改。例如,使用指标,评论等…
考虑到这一点,我开始怀疑是否可以扩展 Wordpress ORM,以便您可以生成三角形,然后将其注入到 prod 站点。
有人试过这个,看着它,还是有任何想法或意见?
最佳解决方案
现实是,我们想要的是:http://www.liquibase.org/
Liquibase is an open source (Apache 2.0 Licensed), database-independent library for tracking, managing and applying database changes. It is built on a simple premise: All database changes are stored in a human readable yet trackable form and checked into source control.
但是我们的开发过程并不支持它。我们通常不会通过我们自己编写的离散脚本修改数据库,我们使用我们激活的插件。我们不编写 DML 脚本来修改 look-up 数据,然后我们检查源代码控制,我们在管理页面上使用一个 UI,因此没有源代码以供以后用于在迁移期间复制该更改。
但是,我们可以模拟其中的一些 – 使用此页面上列出的一些工具:
http://stackoverflow.com/q/225772/149060
例如,液态碱基具有差异特征,还可以包括对数据的改变。我们可能会将模式和数据差异输出到脚本,排除 (尽可能) 某些可能包含测试数据 (即 post 等) 的表,然后将脚本应用于生产数据库。
MySQLDiff(在 StackOverflow 问题上讨论) 做模式差异,作者建议用于 table-wise 数据差异的 mysql_coldiff – 两者都在 perl 中实现,如果 java 工具 (液体基础) 对于您的服务器来说太资源沉重 – 尽管将数据库本地化并运行 PC 上的工具解决了这个问题…
如果我们真的要这样做,我们应该记录与设置,选项或其他配置更改以及任何模式更改相关的任何 sql,并将记录的代码转换为迁移脚本,以对付我们的生产服务器。播放针对服务器的迁移脚本,复制 wordpress 站点文件 (不包括上传,如果适用),我们是黄金。
所以,在我看来,最好的方法是开发人员的 migration-builder-plugin,它捕获我们需要的 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.
例如:
捕获名称:激活& 配置插件 XYZ
捕获状态切换 – 打开
… 安装和配置插件 XYZ
捕获状态切换 – 关闭
导出迁移脚本:激活& 配置插件 XYZ
按导出按钮 – 生成一个弹出文本字段与已过滤的陷阱 SQL – 理想的 pre-formatted 作为一个 shell 脚本与命令行调用 mysql 。复制& 将其粘贴到您的迁移代码文件夹并添加到您的源代码存储库。
注意在工作时切换捕获和关闭,您将能够生成完美的迁移脚本,使生产数据库与您的分段数据库具有相同的配置。
更好的是,你会有一个脚本 (或系列相同),你可以测试。成像具有可复制,可测试,迁移脚本!
我已经爱上了
还有谁?
次佳解决方案
Database Sync WordPress 插件在两个服务器之间的数据同步工作非常好。
默认情况下,它会覆盖所有目标数据,但是我刚刚实现了插件的一些增强功能,只允许您同步特定的数据库表。这可以帮助您保留您不想覆盖的评论,用户和其他此类数据。这是否给你你需要的粒度?
我尚未向公众发布我的更改,但如果您有兴趣,请发送电子邮件至 simon-at-yump.com.au 。如果有人发现这有用或有其他功能请求,请告诉我,我会看看我能做什么。
更新:我也刚刚发现了 WP-Sync-DB 插件,它是商业 WP-Migrate-DB-Pro 插件的一个分支。它做的非常类似的事情,虽然可能比数据库同步更波兰。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。