データベース - postgreSQL - バックアップ・リストア
- 1. 概要
- 2. 全体
- 3. ロール
- 4. データベースごと
1. 概要
データのバックアップは、重要です。
特に、データベースに関しては、データが命です。
データベース自体のバージョンアップや、ハードウェア等の故障に備えて、バックアップをとっておかないと、万が一のときに致命的なことになってしまいます。
最近(2020年11月16日)もそんな恐ろしいニュースがあったな。
まぁそのニュースでは、データベースは関係なさそうだし、契約上、バックアップをとってはいけない契約であったらしいが・・・。
移行先にデータがない状態で、前のシステムを消去してしまったらしい。
本ページは、下記のサイトを参考にさせていただきました。
「PostgreSQL データベース接続ユーザー(ロール)のバックアップとリストア | kakiro-web カキローウェブ」
「pg_dump」
2. 全体
特に大きさその他に支障がない場合は、全体をまとめて、バックアップしたり、リストアしたりするのが最も簡単な方法です。
データベース全体をテキストファイルに出力するには
pg_dumpall --column-inserts --username=postgres > ファイル名
圧縮なしにテキストファイルに出力しますので、比較的小さめのデータベースが対象になります。
「--username=pgsql」で右辺に設定しているのは、「postgreSQL」ユーザです。
バージョン「8」までは、「pgsq」 。
バージョン「9」以降は、「postgres」になりますのでご注意ください。
上記でバックアップしたファイルをリストアするには
psql --username=postgres --file ファイル名 postgres
3. ロール
バックアップ。
pg_dumpall --roles-only --clean --if-exists > ファイル名
リストア。
psql -f ファイル名 postgres
4. データベースごと
データベースごとにバックアップするには、「pg_dump」を使用します。
「pg_dump」は、テキスト形式の他、アーカイブ形式、さらにアーカイブを圧縮したりもできます。
ここでは、テキスト形式とアーカイブ形式の2例を紹介します。
テキスト形式でバックアップ。
pg_dump -Fp データベース名 > ファイル名
「-F」がフォーマット指定で、「p」がプレーンテキスト。
省略可能です。
リストア。
psql -d データベース名 -f ファイル名
カスタムアーカイブ形式でバックアップ。
pg_dump -Fc データベース名 > ファイル名
「c」は、カスタムアーカイブ形式。
リストア。
pg_restore --clean --create ファイル名
「--clean」は、再作成前にデータベースオブジェクトを整理(削除)します。
「--create」は、リストア前にデータベースを作成します。
|
|