🚣
Fly.ioのRailsアプリでデータベースを作成して接続する方法
Fly.ioでRailsアプリを運用していて、接続するデータベースを別のデータベースに切り替えることがありました。以下の手順で接続先のデータベースを切り替えることができました。
既存データベースのバックアップ
既存データベースにプロキシで接続します。
fly proxy 15432:5432 -a <postgres-app-name>
pg_dump
で既存データベースのバックアップを作成します。
pg_dump -Fc -h localhost -p 15432 -U <dbuser> <dbname> > <dbname>.dump
接続先のデータベースを作成
fly postgres create
データベースの接続を設定
既存データベースの接続を解除
既存データベースの接続を解除します。このコマンドの実行後から作業が完了するまではアプリが動作しなくなります。
fly postgres detach --app <app-name> <postgres-app-name>
作成したデータベースへの接続を設定
fly postgres attach --app <app-name> <postgres-app-name>
データベースの接続文字列が表示されるので、それをアプリのsecrets
に設定します。
fly secrets set DATABASE_URL='<database-url>'
データベースのリストア
接続先のデータベースにプロキシで接続します。
fly proxy 15432:5432 -a <postgres-app-name>
pg_restore
でデータをリストアすれば完了です。
pg_restore --clean --no-acl --no-owner -h localhost -p 15432 -U <dbuser> -d <dbname> <dbname>.dump
Discussion