Open3
postgresのバックアップを取る
開発環境で、作成したデータは残しておきつつ、新たにデータベースにカラムを追加する必要が出てきた時の場合に、
- 現在のデータをバックアップ
- 再度マイグレーションをかけ直し
- データをリストア
する必要がある。
今後も使用したい場面があるかもしれないため、やり方を残しておきます。
補足
- railsだと、add_migrationでマイグレーションを新たに追加することでマイグレーションのリセットをする必要はないが、開発初期段階だとテーブル変更が頻繁にされることが想定されるため、ベースのマイグレーションファイルを書き換えた方がファイル管理がしやすい。
- また、データがseedデータで完結する場合はrails db:migrate:reset→rails db:seedを実行するだけで問題ないです。今回はmockデータを外部apiから取得したりしておりseed管理できなかったため、今回のやり方を採用しています。
- 状況
- データベース:postgres
- dockerコンテナでpostgresを動作
データのバックアップを作成する
- pg_dumpでダンプデータを生成する
docker compose exec [docker-composeのdbのサービス名] pg_dump -U [postgresのユーザ名] [データベース名] > [出力したいファイル名].sql
データをリストアする
docker compose exec -T [docker-composeのdbのサービス名] psql -U [postgresのユーザ名] -d [データベース名] < [先ほど出力したファイル名].sql