1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PostgreSQL】バックアップとリストアをコマンドで実行

Last updated at Posted at 2021-01-26

ただ単にタイトル通りのことをしたかっただけなのにやたらと苦労したのでまとめ。

この記事で扱うもの

※実際に使用しているコマンドについてのみ記載する。

バックアップ

PostgreSQL 12.4文書 - pg_dump

バックアップするにはpg_dumpコマンドを使用する。

基本形式
pg_dump [connection-option...] [option...] [dbname]
説明するパラメータ
pg_dump -h [IPアドレス/ホスト名] -p [ポート番号] -U [ユーザ名] -d [データベース名] -Fc -v -f [バックアップファイル名]

説明

  • -h [IPアドレス/ホスト名]
    データベースサーバーのIPアドレス、またはホスト名を指定する。
    ローカルにデータベースがおいてあるのであれば、localhostと指定するか、もしくは省略できる。

  • -p [ポート番号]
    データベース接続に使用しているポート番号を指定する。
    デフォルトのままであれば5432と指定するか、もしくは省略できる。

  • -U [ユーザ名]
    接続オプション。
    データベース接続に使用しているユーザ名を指定する。
    省略した場合、コンピュータ名となる模様。※未検証

  • -d [データベース名]
    バックアップしたいデータベースの名前を指定する。
    このパラメータを省略して[dbname]部分に指定することもできる。

  • -Fc
    バックアップの出力形式。
    -Fcを組み合わせたもの。
    cの他にp d tとあるが、特段の理由が無ければ-Fcと指定する。

  • -v
    バックアップの進捗がコンソール上に表示される。
    省略可能。

  • -f [バックアップファイル名]
    任意のファイル名を指定する。
    絶対パス/相対パスのどちらを指定しても問題ない。
    拡張子の指定もない。
    backupでもbackup.dumpでもなんでもいい。

使用例

使用例
pg_dump -h localhost -p 5432 -U postgres -d dbname -Fc -v -f backup.dump

リストア

PostgreSQL 12.4文書 - pg_restore

バックアップするにはpg_restoreコマンドを使用する。

基本形式
pg_restore [connection-option...] [option...] [filename]
説明するパラメータ
pg_restore -h [IPアドレス/ホスト名] -p [ポート番号] -U [ユーザ名] -d [データベース名] -v -c --if-exists -j [ジョブ数] [バックアップファイル名]

説明

  • -h [IPアドレス/ホスト名]
    データベースサーバーのIPアドレス、またはホスト名を指定する。
    ローカルにデータベースがおいてあるのであれば、localhostと指定するか、もしくは省略できる。

  • -p [ポート番号]
    データベース接続に使用しているポート番号を指定する。
    デフォルトのままであれば5432と指定するか、もしくは省略できる。

  • -U [ユーザ名]
    接続オプション。
    データベース接続に使用しているユーザ名を指定する。
    省略した場合、コンピュータ名となる模様。※未検証

  • -d [データベース名]
    リストアしたいデータベースの名前を指定する。

  • -v
    リストアの進捗がコンソール上に表示される。
    省略可能。

  • -c
    データベース内のテーブルが削除されてからリストアが実行される。
    pg_restore: エラー: could not execute queryなるエラーが発生する場合に追加。
    省略可能。

    • --if-exists
      -cと併用するパラメータ。
      DROP文にIF EXISTSが追加される。
      削除対象のテーブルが存在しない場合にDROP文が実行されなくなる。
      省略可能。
  • -j [ジョブ数]
    リストア処理が複数セッションで並列処理される。
    CPUのコア数を目安に指定する。
    処理速度が改善する場合がある。
    省略可能。

  • [バックアップファイル名]
    任意のファイル名を指定する。
    絶対パス/相対パスのどちらを指定しても問題ない。

使用例

使用例
pg_restore -h localhost -p 5432 -U postgres -d dbname -v -c --if-exists -j 4 backup.dump

オマケ

変数にパスワードを設定しておけば何回もパスワードを入力しなくて済む。

SET PGPASSWORD=postgres

その他、各変数に値を設定しておけば対応するパラメータを省略できる。

SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGDATABASE=dbname
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?