由于Heroku上的MongoDB附加组件mLab即将停止,这是迁移到另一个免费的MongoDB服务的时候的备忘录

总结

以下是关于如何迁移至后续可免费使用的MongoDB服务(MongoDB Atlas),由于Heroku上免费提供的MongoDB附加组件mLab将停止服务。

画面操作手续繁多,为节省篇幅已省略部分步骤,希望对迁移时能提供参考。

背景

我在Heroku上使用免费计划来构建了用Rails开发的个人兴趣网站(※),并且在其中使用了mLab附加组件,这个组件允许免费使用MongoDB。虽然在免费计划中有一些容量和其他限制,但对于小规模使用来说,这种限制并没有问题。

※创建的网站:骏河部

然而,大约在7月11日左右,收到了下面这样的电子邮件。

mail

总结一下,2020年11月10日,mLab的MongoDB附加组件将被删除,无法再使用。

詳細は下記に記載されていますが、mLab自体がMongoDB本体の会社(MongoDB Inc)に買収されたことに伴い、そちらのクラウドサービス(MongoDB Atlas)に統合されるためのようです。
参考

幸いにもサービス停止に伴い、MongoDB Atlas側へ無料利用可能なプラン(512MBまで利用可能)へのマイグレーション方法が案内されており、今回はそちらのプランへのマイグレーションを実施した際の記録になります。

手順

MongoDBの対応バージョンの確認

mLabで動いていたMongoDBのバージョンは3.6ですが、MongoDB Atlasは4.2となるため、使用しているmongoidやrubyのバージョンに注意が必要です。
今回私の場合には4.2に対応しているバージョンを使用しており、幸いにも対応は不要でした。
バージョン等の対応に関しては下記が参考になります。
参考

创建账户

スクリーンショット 2020-07-20 21.21.18.png

创建集群 un Cluster)

登录后,选择“创建集群”。

create.png

选择免费计划。

Free.png
reagion.png

如果能成功创建Cluster,就算完成了。

clu2.png

与mLab账户的连接

点击屏幕左上角的齿轮图标。

setting.png

由于有类似连接到mLab的选项,选择右侧的按钮。

mLab
mlab.png

如果您不知道mLab帐户,请先登录Heroku,然后选择使用mLab的应用程序中的Addons中的mLab进行登录,然后在上述登录界面中重新加载即可登录。

heroku.png
auth.png

返回到Atras的屏幕,如果显示mLab Account的画面,则表示连接已成功完成。

mLabCon.png

迁移设置

在mLab账户界面上,选择”Actions” → “…” → “配置迁移”。

mlabcon1.png
cop.png
t1.png
import.png

請勾選「Allow ~」的核取方塊,然後選擇右下方的按鈕。

Allow.png

选择创建的Cluster,然后点击右下角的按钮。

clus.png
fin1.png

进行迁移

选择“迁移部署”中的“确认”选项。

mig1.png

请点击“确认并继续”。

mig2.png
mig3.png
mig4.png
mig5.png
mig55.png
mig6.png

因为迁移开始了,所以请稍等。
等待一段时间后,选择“开始使用Atlas”即可完成。

migfin.png
con.png

如果您在使用Heroku的环境变量,请按照以下方式将环境变量替换为新的数值:
heroku config:set 环境变量名称=”上述连接URL”

应用程序的启动

如果停止了Heroku应用程序,请重新启动它。
请确认MongoDB使用的功能是否正常运行。

最終結果

请删除Heroku上的mLab附加组件。
根据下面的内容,建议您提前进行备份,具体操作可自行决定。
https://docs.mlab.com/backups/#retention-policies

另外,当删除mLab时,自动添加的MONGODB_URI和MONGOLAB_URI等环境变量将被删除,因此建议使用heroku config等命令将环境变量的值输出并备份。

herokuaddons.png
delmongo.png

以上是Heroku端删除mLab的操作已经完成。
为了保险起见,让我们尝试验证一下使用MongoDB的功能是否正常运行。

总结

我在Heroku上的mLab MongoDB附加组件停止后,介绍了切换到替代服务MongoDB Atlas的方法备忘录。

尽管过程繁琐,但是成功进行迁移后我松了一口气。

广告
将在 10 秒后关闭
bannerAds