如何同步开发和生产数据库

问题描述 投票:0回答:13

您是否知道同步两个数据库的应用程序 - 在开发过程中有时需要添加一两个表行或新表或列。 通常我将每个 sql 语句写入某个文件中,并在上传路径期间在我的生产数据库上执行这些行(之前备份它)。 我使用 mySQL 和 postreSQL 数据库。

您的实践是什么以及哪些应用程序可以帮助您。

mysql synchronization
13个回答
31
投票

您要求提供工具或应用程序答案,但您真正需要的是流程答案。这里的基本主题是,您应该对数据库 DDL(和 DML,如果需要)进行版本控制,并提供更改脚本以便能够将数据库的任何版本更新到更高版本。

这组由 Jeff Atwood 提供、由 K. Scott Allen 撰写的链接详细解释了它应该是什么样子 - 他们做得比我在这里写得更好:https://blog.codinghorror.com/获取版本控制下的数据库/


6
投票

对于 PostgreSQL,您可以使用 另一个 PostgreSQL Diff 工具 。它可以非常快速地比较两个 SQL 转储(在包含大约 300 个表、50 个视图和 500 个存储过程的数据库上只需几秒钟)。这样您就可以轻松找到您的更改并获得可以执行的 sql diff。

来自 APGDiff 页面:

另一个 PostgreSQL Diff 工具是简单的 PostgreSQL diff 工具,对于架构升级很有用。该工具比较两个模式转储文件并创建适合旧模式升级的输出文件(经过一些手工修改)。


5
投票

拥有仅添加到底部的脚本(当然在源代码控制下)。结合从生产数据库到开发人员的定期恢复,您应该是黄金。如果你严格要求的话,这会非常有效。

否则我知道很多人在 SQLServer 上使用 redgate 的东西。


5
投票

再次投票给 RedGate SQL Compare

http://www.red-gate.com/products/SQL_Compare/index.htm

没有它我不想活下去!

编辑:抱歉,这似乎仅适用于 SQL Server。不过,如果任何 SQL Server 用户有同样的问题,我肯定会推荐这个工具。


2
投票

如果您为开发数据库编写 SQL 语句(我想这是一系列 DDL 指令,例如 CREATE、ALTER 和 DROP),为什么不通过将它们记录在表中来跟踪它们,并使用“版本”索引?然后您将能够:

  1. 跟踪您的版本更改
  2. 制作一个小例程,通过将记录的指令发送到数据库来“自动”更新您的生产数据库。

1
投票

我真的很喜欢EMS工具

这些工具适用于所有流行的数据库,并且您对每种类型的数据库都拥有相同的用户体验。

其中一个工具是 DB Comparer。


1
投票

蟾蜍

过去曾多次救过很多人。为什么人们运行 sql 时没有退出策略?

redgate也不错。


0
投票

Siebel(CRM、销售等管理产品)有一个内置工具,可以将生产数据库与开发数据库 (dev2prod) 保持一致。

否则,您必须坚持手动执行的脚本。


0
投票

Navicat 有一个结构同步向导可以处理这个问题。


0
投票

我通过使用 Hibernate 解决了这个问题。它可以检测并自动创建丢失的表、列等。


0
投票

您可以使用 dbDeploy 或类似的脚本为您当前的工作方式添加一些自动化。这将允许您跟踪架构更改并根据需要升级/回滚您的架构。


0
投票

这是我为同步 Magento 数据库而编写的直接 Linux bash 脚本...但您可以轻松修改它以用于其他用途:)

http://markshust.com/2011/09/08/syncing-magento-instance-development-development


0
投票

DBV - “数据库版本控制,变得简单!” (PHP)

© www.soinside.com 2019 - 2024. All rights reserved.