从 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.conf
和 pg_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 mydbpg_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 迁移