从 Heroku 迁移到 Azure - 正确进行数据库迁移

Posted

技术标签:

【中文标题】从 Heroku 迁移到 Azure - 正确进行数据库迁移【英文标题】:Migrating from Heroku to Azure - getting the database migration right 【发布时间】:2016-02-28 00:18:29 【问题描述】:

我在 Heroku 上有一个 Django 应用程序。我正在将它迁移到 Azure,利用他们最近提供给我的 12 万美元/年的信用额度。这是我到目前为止所做的:

i) 我使用 Ubuntu (Standard_D1) 创建了一个 Azure VM。

ii) 我在上面安装了 postgresql(我选择的数据库)

iii) 我将 Heroku 应用程序的文件从我的 github 拉到 Azure VM。

iv) 我在 Azure VM 上创建了一个 postgres 数据库,然后运行 ​​syncdb 来创建所需的表。

v) 我调整了 postgresql.confpg_hba.conf 以满足一些调整要求等。

vi) 我从 Heroku 应用程序的仪表板中进行了备份,然后下载了它。此备份文件的名称是随机 uuid,没有文件格式(例如 f0af6457-1a24-47d0-881c-434f9bef7c92)。

vii) 我现在正准备使用 pg_restore 将备份放入 Azure VM 上新创建的+同步应用程序中。

到目前为止,这一切听起来都对吗?我有 3 个问题:


1) pg_restore 可以使用我从 Heroku 下载的备份吗?此备份根本没有文件格式;而我的印象是它必须是 .tar 存档才能与 pg_restore 兼容。

2) 我的数据库名为mydbname。数据备份保存在/datadrive/backup/filename。因此,就我而言,正确的pg_restore 命令类似于:pg_restore -d mydbname /datadrive/backup/filename?

3) 在我的 Azure 应用程序中成功加载正确数据后,我认为最后一步是将流向 Heroku 应用程序的流量路由到 Azure 应用程序。为此,我将调整 DNS 条目。在你看来,我还有什么遗漏吗?

【问题讨论】:

Hassan 的步骤似乎恰到好处,对于 pg_restore pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb 我确定你使用 pg_dump 创建备份 嘿,Brij,感谢您的参与。我实际上并没有使用 pg_dump 本身 - Heroku 的仪表板有一个选项,您可以通过按下按钮下载备份。我猜这只是封装了pg_dump 命令。那么对于pg_restore而言,拥有一个没有文件格式或扩展名的备份文件不是问题吗? 【参考方案1】:

本质上,扩展应该无关紧要,你的恢复应该可以工作,但坦率地说,我还没有用 heroku 备份测试过自己。 但是我建议让它成为一个有效的 .dump 文件

curl -o latest.dump heroku pg:backups public-url --app <yourappname>

这应该是您的有效 .dump 文件,尽管它与您已有的备份没有任何不同..

【讨论】:

以上是关于从 Heroku 迁移到 Azure - 正确进行数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

带有解析服务器的 Mandrill 无法进行 heroku 迁移

将数据库从本地 django 迁移到 heroku

从ExpeditedSSL迁移到免费的Heroku SSL

将 rails 应用程序从 3.2.3 迁移到 rails 4.0.0.rc2 后无法在 Heroku 上部署

从 Heroku 迁移到 AWS 时的清单

如何将现有的 Web 应用程序从 Heroku 迁移到 AWS