🚣
Fly.ioでデータベースを作成してRailsアプリの接続先を切り替える方法
Fly.ioでRailsアプリを運用していて、接続するデータベースを別のデータベースに切り替えることがありました。以下の手順で接続先のデータベースを切り替えることができました。
Fly.ioのPostgreSQLのパスワードを確認
SSHでログインしてecho
します。
fly ssh console -a <app-name>
echo $DATABASE_URL
既存データベースのバックアップ
既存データベースにプロキシで接続します。
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
PostgreSQLサーバーのディスク容量を拡張
PostgreSQLのサーバーを作成すると、デフォルトのディスク容量は1GBとなっています。これを2GBに拡張する方法を調べていました。
以下のコマンドでディスク容量を拡張することができました。
fly volumes extend <volume id> -s 2 -a <app name>
公式ドキュメントによると、ディスク容量の拡張はできても縮小することはできないようですので、この点は注意していきたいと思います。
Discussion