概要
Herokuで無料で利用可能なMongoDBのアドオンであるmLabのサービス終了に伴い、後継の無料利用可能なMongoDBサービス(MongoDB Atlas)に移行した際の方法のメモです。
画面操作手順が多く、一部の手順等を省略しておりますが、移行時の参考になればと思います。
背景
Heroku上で無料プランのみで、Railsで作成した趣味のWebサイト(※)を構築しており、
その中でMongoDBが無料利用可能なmLabアドオンを使用していました。
無料プランですと容量等、色々と制限がありますが、小規模で使用する分には問題ない形で使用できていました。
ですが、7/11頃に下記のようなメールが届いていました。
要約すると、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に対応しているバージョンを使用しており、幸いにも対応は不要でした。
バージョン等の対応に関しては下記が参考になります。
参考
アカウント作成
https://www.mongodb.com/cloud/atlas
にアクセスして、Atlasアカウントを作成します。
(詳細は割愛しますが、メールアドレスやパスワードを入力し、メールのアクティベーションを実施してください。)
Clusterを作成
ログイン後、クラスターを作成します。
Clusters → Build a Clusterを選択します。
Freeプランを選択します。
AWS, GCP, Azureやリージョン等の選択ができますのでお好みで選択してください。
Clusterが作成できれば完了です。
mLabアカウントとの接続
画面左上の歯車アイコンを選択します。
Connect to mLabといった項目があるので右側のボタンを選択します。
なお、mLabのアカウントが不明な場合には一度Herokuにログインして、mLabを使用しているアプリ内のAddonsのmLabを選択するとログインできるのでその後、上記のログイン画面でリロードするとログインできます。
ログイン完了後に、ダイアログが表示されるのでAutorizeで連携を許可します。
Atrasの画面に戻って、mLab Accountの画面が表示されれば連携が完了です。
マイグレーション設定
mLab Accountの画面でActions → ... → Configure Migrationを選択します。
Create or Select a projectを選択します。
プロジェクトを選択して Confirm ~ を選択します。
(デフォルトであればProject 0)
mLabから引き継いだアカウント情報などが表示されるので確認及び、importにチェックがついていることを確認して、 Import ~ を選択します。
Allow ~ のチェックボックスにチェックを入れて、右下のボタンを選択します。
作成したClusterを選択して、右下のボタンを選択します。
マイグレーション実行
Migrate DeploymentのConfirmを選択します。
Confirm And Continueを選択します。
チェックボックスにチェックを入れずに、Begin Test Runを選択します。
マイグレーションが無事に成功したら、Confirm Connectivityを選択します。
チェックボックスにチェックを入れて、Begin Migrationを選択します。
(下記では、アプリケーションを事前に止めるように注意しているのでheroku ps:scale web=0等のコマンドで予めアプリを止めた方が無難です。)
マイグレーションが始まるので待ちます。
しばらくすると完了するので、Start Using Atlasを選択します。
MongoDBの接続URLの情報の雛形が表示されるので、コピーした上で
username及びpasswordに関してはherokuで使用していた値に置き換えて使用します。
herokuの環境変数を使用している場合には、下記のように環境変数を新しい値に書き換えます。
heroku config:set 環境変数名="上記の接続URL"
アプリの起動
Herokuのアプリを止めている場合には、再立ち上げを行います。
MongoDBを使用している機能が動くこと確認してください。
後始末
HerokuのmLabのアドオンを消します。
下記等を参考に予めバックアップを取ることが推奨されているので任意で実施してください。
https://docs.mlab.com/backups/#retention-policies
また、mLabを削除すると自動で追加されたMONGODB_URI"や"MONGOLAB_URI等の環境変が削除されるとの事ですので、
heroku config等で環境変数の値を出力してバックアップしておく事が推奨されています。
Herokuにログインを行い、Configure Add-onsを選択します。
mLabのDelete Add onを選択します。
確認ダイアログが表示されるのでアプリ名を入力して削除します。
以上でHeroku側のmLabの削除が完了しました。
念のためMongoDBを使用した機能が動くか確認してみましょう。
まとめ
Heroku上で動くMongoDBのアドオンのmLabの終了に伴い、代替サービスとなるMongoDB Atlasへ移行時の方法のメモを紹介しました。
手順が多く大変でしたが、無事マイグレーションできたので一安心しました。