【PostgreSQL】dumpファイルとは?作成と復元方法を解説

※ この記事にはアフィリエイトリンクが含まれます

PostgreSQLは、柔軟性の高いオープンソースのリレーショナルデータベース管理システムです。日々の業務やシステム開発で使用されることが多く、大量のデータを扱う環境では、データのバックアップや復元が非常に重要な役割を果たします。その中でも、dumpファイルはデータベース全体や一部のデータを効率的にバックアップ・復元するための非常に便利な手段です

この記事では、PostgreSQLのdumpファイルについて詳しく解説します。基本的なコマンドの使い方や、特定のテーブルやスキーマだけをバックアップする方法を紹介していきます。

PostgreSQLのdumpファイルの種類

PostgreSQLでは、複数の形式でデータベースのdumpファイルを作成することが可能です。それぞれの形式には特徴があり、用途に応じて使い分けることで効率的なバックアップや復元が実現できます。ここでは代表的なdumpファイルの種類を紹介します。

SQLダンプ

SQLダンプは、最も基本的な形式で、データベースの内容をSQL文として書き出します。テーブルの作成文やデータの挿入文が含まれ、簡単に他のデータベースへ移行したり、テキストファイルとして閲覧できたりします。

コマンド例

pg_dump dbname > dbname.sql

カスタムフォーマット

カスタムフォーマットは、pg_dump のオプションで指定できる圧縮された形式です。この形式は通常のSQLダンプよりも高速で、ファイルサイズが小さくなる利点があります。さらに、pg_restore を使うことで、特定のテーブルやスキーマだけを復元することが可能です。

コマンド例

pg_dump -Fc dbname > dbname.dump

ディレクトリ形式

ディレクトリ形式は、dumpデータを複数のファイルに分割して保存する形式です。大規模なデータベースでのバックアップや復元に適しており、並列処理をサポートしているため、バックアップや復元の速度が向上します。この形式では、ディレクトリ内に複数のファイルが生成されます。

pg_dump -Fd dbname -f /path/to/directory

tarフォーマット

tarフォーマットは、ディレクトリ形式の内容を1つのtarアーカイブファイルにまとめる形式です。tar形式はディレクトリ形式の利点を持ちながら、1つのファイルにまとめるため管理がしやすいという特徴があります。

pg_dump -Ft dbname > dbname.tar

pg_dumpの基本的な使い方

pg_dump は、PostgreSQLデータベースのバックアップを取得するための主要なコマンドです。シンプルなコマンドから複雑なオプションまで、多様な形式や内容でデータベースをダンプすることが可能です。このセクションでは、pg_dump の基本的な使い方を紹介します。

単一データベースのダンプ

最も一般的なバックアップ方法は、データベース全体をSQLファイルとしてダンプすることです。これにより、後でデータベースを再構築する際に役立つSQL文が含まれたファイルが生成されます。

コマンド例

pg_dump dbname > dbname.sql

このコマンドでは、dbname というデータベースのすべてのデータが dbname.sql ファイルに保存されます。このSQLファイルには、テーブルの作成文やデータ挿入文が含まれ、復元時にそのまま再利用することができます。

カスタムフォーマットでのダンプ

データベース全体を圧縮したカスタムフォーマットでダンプするには、-Fc オプションを使用します。カスタムフォーマットは、pg_restore コマンドで細かく制御しながら復元が可能で、バックアップデータを圧縮するため、ファイルサイズが小さくなります。

コマンド例

pg_dump -Fc dbname > dbname.dump

このコマンドは、dbname.dump というカスタムフォーマットのダンプファイルを生成します。

SQLダンプを圧縮する

ダンプファイルが大きくなる場合、ファイルサイズを小さくするために圧縮することができます。gzip コマンドを併用することで、SQLダンプを圧縮することができます。

コマンド例

pg_dump dbname | gzip > dbname.sql.gz

このコマンドは、SQLダンプをgzip で圧縮し、dbname.sql.gz というファイルを生成します。圧縮されたファイルは、データのバックアップ保存場所を節約するために便利です。

特定のテーブルをバックアップする

データベース全体ではなく、特定のテーブルだけをバックアップする場合には、-t オプションを使用します。

コマンド例

pg_dump -t tablename dbname > tablename.sql

このコマンドは、tablename というテーブルだけをtablename.sql ファイルにダンプします。

dumpファイルを復元する

dumpファイルを作成した後、実際にデータベースを復元する方法を解説します。

SQLダンプの復元

SQLダンプ形式のファイルは、psql コマンドを使って復元できます。SQLファイルにはテーブル作成やデータ挿入のSQL文が含まれているため、直接データベースに適用する形で復元が可能です。

コマンド例

psql dbname < dbname.sql

このコマンドを実行すると、dbname.sql ファイルの内容が dbname データベースに復元されます。事前に復元元のデータベースを作成しておく必要があるため、データベースが存在しない場合は以下のコマンドで作成します。

データベースの作成コマンド

createdb dbname

特定のデータのみを復元する

pg_restore の機能の一つとして、dumpファイルから特定のテーブルやスキーマのみを復元することができます。例えば、あるテーブルだけを復元したい場合、以下のようにコマンドを実行します。

特定テーブルの復元例

pg_restore -d dbname -t tablename dbname.dump<br>

このコマンドは、dbname.dump の中から特定のテーブルだけをdbname データベースに復元します。

スキーマ単位での復元例は以下のようになります。

スキーマ単位での復元例

pg_restore -d dbname -n schemaname dbname.dump

復元対象を絞ることで、必要なデータだけを効率的に復元することが可能です。

まとめ

PostgreSQLのデータベースバックアップは、データを保護し、トラブル発生時に迅速に復元するために不可欠です。dumpファイルの形式や復元の方法を理解しておくことで、日常的な運用から非常時の対応まで幅広く役立ちます。

PostgreSQLのダンプ機能を活用することで、データ管理がより安心で確実なものとなり、業務の信頼性向上にもつながることでしょう。

PostgreSQLを効率よく学びたい方はUdemyがおすすめ

もっとわかりやすくPostgreSQLを学びたいという方には、Udemyがおすすめです。Udemyは、オンライン学習を手軽に始められる便利なプラットフォームで、初心者から上級者向けまで、様々なレベルのSQLコースがそろっています。ですので自身のスキルや目的にあったコースを選ぶことができます。

また、Udemyはコミュニティのサポートもしており、質問や情報交換も行えるため、学習を進めている中で浮かんだ疑問などを解消する手助けを受けることもできます。

IT資格の人気オンラインコース

Udemyは定期的に90%OFFなどの規模でセールを開催しているので、そのタイミングを狙うのもありでしょう。今までにセールが開催された時期をまとめました。

  • 季節ごとのセール
    年末年始や夏季、春季などの特別な時期に大規模なセールを実施
  • 祝日セール
    バレンタインデー、感謝祭、クリスマスなどの祝日にもセールを実施
すぐに役立つスキルを 身につけよう! セール開催中!

コメント