heroku-postgresql 更新破坏了我的应用程序,我可以恢复自动发布以便在保存发布之前存储数据库中的数据吗?

问题描述

运行 heroku releases 时,我看到以下信息:

版本 描述 LDAP 时间
v364 通过 heroku-postgresql 更新 HEROKU_POSTGREsql_Amber heroku-postgresql@addons.heroku.com 2021/01/13 17:09:43 -0800
v363 启用allow-multiple-sni-endpoints功能 api-maintenance@heroku.com 2020/08/06 11:20:42 -0700
v362 通过 heroku-postgresql 更新 HEROKU_POSTGREsql_teal heroku-postgresql@addons.heroku.com 2019/10/16 19:54:44 -0700

enter image description here

最新的 Heroku 自动版本破坏了我的旧应用程序,因为它将 Postgresql 版本从 9.6 更改为 12.5,该应用程序当前不支持该应用程序。

我想知道我是否可以回滚在 2021/01/13 (v364) 上完成的这个自动更改?

一个问题是,如果我打算使用 Heroku 标准回滚命令 heroku rollback v363,所有存储的 b/w v363 和 v364 版本 (2019/10/16 - 2020/08/06) 的数据会在回滚后保存吗?

最后一个问题,v364 发布(2021/01/13 - 现在)后创建的数据在回滚到发布 v363 后会保持不变吗?

解决方法

通过长路径解决了这个问题:

  1. 我设置了虚拟机,VirtualBox 对我来说很好用。我在 VM 上设置了不同版本的 Postgres,包括 9 和 12

  2. 我从 Heroku 导出了数据库,并在本地 VM 上从 12 转换为 9。首先,我使用 Heroku Web UI 加载了数据库备份。我将 DB 文件导入到本地 Postgres 12,然后将 db 导出到 SQL 文本文件中。然后我将数据从 SQL 文本形式重新导入到 Postgres 9

  3. 我的应用程序需要支持遗留堆栈,Ruby 版本很旧,Heroku 不再支持。此外,旧版 Ruby 版本的应用程序也在 Ubuntu 14 上进行了测试,Heroku 停止支持该操作系统。所以我在使用 Ubuntu 14 等的 AWS 上设置了 Docker 容器,并将应用程序部署到容器和 Postgres DB 9,在 AWS RDS 中设置

Here 您可以找到如何在 AWS 上创建运行 Ruby 应用程序的 Docker 容器的好文章。我按照那里提到的步骤操作,这对我有用。