Open3

postgresのバックアップを取る

masamasa

開発環境で、作成したデータは残しておきつつ、新たにデータベースにカラムを追加する必要が出てきた時の場合に、

  • 現在のデータをバックアップ
  • 再度マイグレーションをかけ直し
  • データをリストア

する必要がある。
今後も使用したい場面があるかもしれないため、やり方を残しておきます。

補足

  • railsだと、add_migrationでマイグレーションを新たに追加することでマイグレーションのリセットをする必要はないが、開発初期段階だとテーブル変更が頻繁にされることが想定されるため、ベースのマイグレーションファイルを書き換えた方がファイル管理がしやすい。
  • また、データがseedデータで完結する場合はrails db:migrate:reset→rails db:seedを実行するだけで問題ないです。今回はmockデータを外部apiから取得したりしておりseed管理できなかったため、今回のやり方を採用しています。
masamasa
  • 状況
    • データベース:postgres
    • dockerコンテナでpostgresを動作
masamasa

データのバックアップを作成する

  • 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