【pgAdmin4/PostgreSQL】pgAdmin4でのPostgreSQLデータベースのバックアップとリストア手順まとめ【バックアップ/リストア】

【pgAdmin4/PostgreSQL】pgAdmin4でのPostgreSQLデータベースのバックアップとリストア手順まとめ【バックアップ/リストア】

クラウド上にあるPostgreSQLのデータベースをローカルにコピーしようと思い、ちょうどクラウドにもローカルにもpgAdmin4の接続が設定済みだったため、そのままpgAdmin4の機能でバックアップとリストアをしようと思ったら意外とハマったので備忘録としてまとめる。

手順

バックアップ

1. pgAdmin4起動

本記事でのpgAdminのversionは6.15です

2. バックアップしたいデータベースを右クリックし「バックアップ」を選択

image-9.png
※テーブル単位でバックアップしたい場合はテーブルを右クリックします。

3. バックアップのオプションを指定

表示されたウィンドウで以下の設定でバックアップを行います。
※以下特に明記しない項目はデフォルトのままです。

  • ファイル名: <任意のファイル名>.sql
    →拡張子は、以下の「形式」の項目で「平文」を選択するので.sqlにしてます。
  • 形式: 平文
    →「リストアをsqlの実行で行いたい」+「生のsqlを編集したりしたい場合がある」という理由で平文を選択しています。
  • エンコーディング: UTF8
    →これについては各々の環境に合わせて変更してください。
    image-10.png

次に「データ/オブジェクト」タブの「保存しない」のグループの

  • 「所有者」
  • 「権限」

の項目のみチェックをonにします。

image-11.png

最後に「オプション」タブでは「INSERTコマンドを使用」をonにします。
→onにするとバックアップで作成されるsql文でinsertコマンドを使用するようになります。
 (以前insertを使用しないでバックアップしたら、リストアするときに構文エラーになってハマったことがあったので、私はこのような設定にしています)

image-12.png

以上のようにオプションを指定したら、「バックアップ」ボタンをクリックします。

バックアップは以上です。

リストア

前提

本記事ではリストアはsqlの実行により行うので、リストア先となるデータベースとデータがある場合、先に古いデータベースを削除しておいてください。(テーブルの無い空のデータベースがあるだけならそのままでokです。)

image-13.png

<補足>
 データベースが接続中で削除できない場合に強制切断するには、クエリツール(対象のデータベースを右クリック > クエリツール等で起動可能)で以下の内容を実行します。(実行は自己責任でお願いします)

image-14.png

select pg_terminate_backend(pid) from pg_stat_activity where datname = '<任意のデータベース名>';

1. リストア先となる空のデータベースを作成する

「データベース(n)」を右クリックして、「作成 > データベース…」を選択します。
 (※nは保有しているデータベースの数です)

image-15.png

表示されたウィンドウで「データベース」の項目に任意のデータベース名を入力して、「保存」ボタンをクリックしてデータベースを作成します。

image-17.png

2. クエリツールでバックアップしておいたsqlを実行する

作成した空のデータベースを右クリックしてクエリツールを起動します。

image-19.png

「バックアップ」の工程で作成された〇〇.sqlファイルをテキストエディタで開くなどして、内容をクエリツールにコピペします。
 コピペしたら、▶ボタンをクリックして実行します。
(バックアップのsqlが実行できればクエリエディタでなくてもやり方は何でもokです)

image-20.png

以上でリストア完了です。

↓確認するとテーブルが作成されています。

image-21.png

以上です。

<おまけ>
 sqlのようにテキスト量が多いファイルの中身を確認する場合は、個人的には「Notepad++」が軽量でおすすめです。(開発はもっぱらVSCodeですが)
 デフォルトのエディタにしなくとも「右クリック > Edit with Notepad++」で呼び出せるのも地味に便利です。

image-22.png

Share this post