是否有一种“正确”的方式在实时和开发服务器之间同步数据库?

时间:2013-09-01 12:29:39

标签: php mysql wordpress git version-control

我通常使用git作为我的WordPress代码的版本控制系统。但是git缺少一些东西。我可以轻松地同步我的项目文件,但同步数据库总是很痛苦。

在live和dev服务器之间是否存在“正确”的数据库同步方式?

我可以将数据库转储包含到版本控制中并每次更新它,但这似乎并不直观。特别是在某些情况下,WordPress倾向于将有关实时服务器的信息保存到数据库中。

P.S。我不是在讨论数据库结构,因为有ORM技术,但页面的实际内容。

3 个答案:

答案 0 :(得分:3)

你可以试试我的剧本:https://github.com/jplew/SyncDB

  

SyncDB是bash部署脚本,旨在使乏味不再同步   Wordpress站点的本地和远程版本。它允许开发人员在   本地环境(例如,MAMP)以快速“推”或“拉”变换到或来自   他们的生产服务器只有一个终端命令。

我经常在live和dev之间来回迁移内容,所以我将过程简化为单个shell命令:

./syncdb

答案 1 :(得分:2)

您可以在MySQL中进行主从复制或主 - 主复制。

主从复制

  • 生产服务器将是主服务器,开发服务器将是从服务器。主服务器将新数据传递给从属服务器。但是,如果在从属服务器上进行更改,则不会更新到生产服务器。

主 - 主复制

  • 将两台服务器都设置为主服务器,如果生产服务器更改,开发服务器也会更改,反之亦然。

进一步阅读

答案 2 :(得分:0)

由于WordPress是一个可用于生产的系统,因此大多数数据都是特定于存储环境的。幸运的是,很少需要迁移数据库(即仅在启动站点时)。

您可以按照以下步骤执行此操作:

  • 导出源环境数据库
  • 将数据库导入目标环境
  • 导出wp_posts表格
  • 替换任何特定于环境的网址(例如 dev.whatever.com whatever.com
  • 重新导入wp_posts表格

由于大多数运行时配置都在wp_config.php,因此wp_options表很少出现问题。但是,如果您愿意,可以将其导出。

注意:这取自我在Configuring WordPress for Multiple Environments上的文章。

还有plugins可以帮助完成此过程。