0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Fly.io】unmanaged PostgresからManaged Postgresへの移行

Posted at

はじめに

発端

個人開発したアプリをFly.ioで運用しています。
ある日、画像のメールが来ました。
放置していましたが、その後発生した問題を解決するためにはこの移行が必要でした。
本記事ではこれまでのDB(以下unmanaged Postgres)をManaged Postgresへ移行する方法について触れます。

画像1
(メールタイトル:[Important]: Your unmanaged Postgres database on Fly.io)

Managed Postgresとは

Fly.ioにはManaged Postgresというサービスがあります。
これはDBにPostgreSQLを使用している場合に利用できるもので、公式ドキュメントには下記記載があります。

運用中の PostgreSQL データベースのあらゆる側面を処理する、当社の完全マネージド データベース サービスです。当社が以下の作業を担当します。

・ 自動バックアップとリカバリ
・ 自動フェイルオーバーによる高可用性
・ パフォーマンス監視とメトリクス
・ リソースのスケーリング(CPU、RAM、ストレージ)
・ 24時間365日のサポートとインシデント対応
・ 保存中および転送中のデータの自動暗号化

DB運用を良い感じにサポートしてくれるそうです。
逆にunmanaged Postgresはそれらを自分で管理しないといけないということですね。
現在Managed Postgresを使用しているかどうかは、下記コマンドを実行して確認可能です。

ターミナル
fly mpg list

ながれ

  1. クラスターの作成
  2. 移行
  3. unmanaged Postgresの削除

Managed Postgresは有料サービスで、これまでの費用に追加されます。

1. クラスターの作成

Fly.ioのダッシュボードに行き、画面左側の「Managed Postgres」をクリックします。

画像2

「Create new cluster」をクリックします。
各所を設定し、「Create cluster」をクリックします。(作成後の変更可能です)

・Name:他に影響は無いので何でも良いです
・Region:どこでも良いですが、理由が無ければアプリと同じにしておけば良いです
・Plan:アプリの規模を考慮して選択します
・Storage:移行前のDBサイズ以上を指定します

現在のDBサイズの確認方法

順番に下記を実行します。

ターミナル
fly ssh console -a アプリ名
psql $DATABASE_URL
SELECT pg_size_pretty(pg_database_size(current_database()));

・Extensions:アプリ内容が必要としないものならチェックは外れたままで良いです

画像3

クラスターを作成できました。
画像4

2. 移行

準備として、作成したクラスターのDATABASE_URLを抑えておきます。
Fly.ioのダッシュボードで作成したクラスターをクリックします。
画面左側の「Connect」をクリックします。
画像5

「Connection URL」というものがありますが、これを後で使用します。
画像6!

順番に下記を実行し、移行をします。
2つ目のNEW_URLについて、末尾に「?sslmode=require」を追加します。(追加しないと次処理が失敗します)

ターミナル
fly ssh console -a アプリ名
NEW_URL="「先ほど確認したConnection URL」+ ?sslmode=require"
pg_dump "$DATABASE_URL" | psql "$NEW_URL"

次にコンソール上で再度psql "$NEW_URL"を実行し、適当なSELECT文を実行し、データがちゃんとあることを確認します。
最後に下記を実行して環境変数を更新します。

ターミナル
fly secrets set DATABASE_URL="「先ほど確認したConnection URL」+ ?sslmode=require"

3. unmanaged Postgresの削除

移行後、アプリの動作確認を行います。
問題が無ければ、削除前にまずは停止します。
Fly.ioのダッシュボードに行き、画面左側の「Apps」をクリックします。
画像7

これまで稼働していたunmanaged Postgresをクリックします。
画面左側の「Machines」をクリックします。
画像8

和同開珎のような見た目をしたボタンがありますので、これをクリックしてインスタンスを停止します。
複数台ある場合は全て停止します。
停止後、しばらく様子見をして問題が無ければ削除します。
Apps > unmanaged Postgres > Settingsにて「Delete app」をクリックします。

移行が未完了の場合はこれでデータが消えてしまうので、移行および停止後の様子見まで確実に問題が無ければ実施してください。

画像9

Appsからunmanaged Postgresがいなくなれば削除成功です。
以上で終了です。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?