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

Bog*_*lan 6 database deployment postgresql heroku

如果这是一个简单的问题,我深表歉意 - 仅靠搜索很难找到答案。

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

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

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

非常感谢你的帮助!

Bas*_*que 4

太长了;博士

\n\n

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

\n\n

数据库迁移

\n\n

“数据库迁移”一词似乎描述了将数据库结构的更改从开发转移到测试再转移到生产机器的繁琐工作。

\n\n
    \n
  • 过去,开发人员和管理员以临时方式完成此任务,将一些 SQL 和代码 \xe2\x80\x93 加上希望和祈祷放在一起。
  • \n
  • 近年来,一些工具似乎将其转变为一个有组织的、可靠的、可重复的、可测试的和自记录的过程。
  • \n
\n\n

飞道

\n\n

\n\n

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

\n\n

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

\n\n

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

\n\n

另一个好处是快速重建数据库到某个点以供测试使用。同样,非常适合与持续集成一起使用,以自动保持数据库处于正确的状态。

\n\n

你为这些好处付出的代价就是纪律。您绝不能再对数据库结构进行任何即时更改。所有更改都必须编写为 SQL 脚本(也可以选择编写为 jar 中的 Java 代码)并通过 Flyway 应用。

\n\n

如果从数据库\xe2\x80\x99s 创建的一开始就使用,会更容易。但您也可以 \xe2\x80\x9cbaseline\xe2\x80\x9d 开始使用现有数据库。

\n\n

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

\n\n

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

\n\n

液体碱

\n\n

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

\n