Postgres - 如何将更改从dev数据库部署到实时版本

时间:2017-04-19 21:49:21

标签: database postgresql heroku deployment

如果这是一个简单的问题,我道歉 - 通过单独搜索很难找到答案。

将开发数据库中的更改部署到实时版本的工作流程是什么?

我的应用程序的数据库是在Heroku上运行的Postgres。它会定期更新用户内容。我有一个在本地运行的开发版本(包含过时的内容)。

我在本地数据库中创建了一个新表,我想实时部署它。如何在不重复实时服务器上的所有工作且不克隆本地副本的情况下执行此操作?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

TL;博士

使用Flyway自动应用您的SQL脚本集合。

数据库迁移

术语“数据库迁移”似乎描述了将数据库结构从开发转移到测试以及生产机器上的变化。

  • 过去,开发人员和管理员以特别的方式完成了这项工作,将一些SQL和代码放在一起 - 加上希望和祈祷。
  • 近年来,一些工具似乎将其转变为有组织,可靠,可重复,可测试和自我记录的过程。

迁飞

Flyway项目是一个基于Java的工具包,用于跟踪一系列用于更新数据库的SQL脚本和Java jar文件。

这里没有特别的魔力。该工具查找使用约定命名的文件,以在SQL脚本上放置序列号。该工具在数据库中创建一个额外的表来存储其元数据,包括应用的最后一个脚本的编号。该工具会扫描存在的任何较新文件,应用它们,并使用最后应用的脚本的编号更新元数据表。

因此,部署意味着只需将最新的SQL脚本移动到部署计算机上,然后让Flyway完成其工作。

另一个好处是可以快速将数据库重建到特定点以用于测试。同样,适用于持续集成,以使数据库自动保持正确的形状。

您为这些福利支付的价格是纪律。您必须从不再次对数据库结构进行任何即时更改。所有更改必须写为SQL脚本(并且可选地作为jar中的Java代码)并通过Flyway应用。

如果从数据库创建的最初阶段开始使用,则更容易。但您也可以“基线”开始使用现有数据库。

Flyway包括命令行工具以及Java API接口。因此,即使是非以Java为中心的应用程序也可以使用Flyway。

开源,免费。支持许多数据库,包括Postgres。

Liquibase

Liquibase项目是另一个与Flyway非常相似的工具。

答案 1 :(得分:1)

我使用EMS DB Comparer for PostgreSQL来完成这项任务。不幸的是,它不是免费的,但多年来我找不到更好的选择。可以比较两个DB并生成create / alter / etc脚本。非常简单,有很多选择。