PostgreSQLデータベースのメンテナンス:pg_dumpコマンドで定期的なバックアップを実施する
PostgreSQLにおけるpg_dumpコマンドの出力先
pg_dumpコマンドは、PostgreSQLデータベースのバックアップを取得するために使用されるツールです。このコマンドは、データベースのスキーマとデータをダンプファイルとして出力します。デフォルトでは、このダンプファイルは標準出力に出力されますが、-f
オプションを使用して別のファイルまたはディレクトリを指定することができます。
出力先
pg_dumpコマンドの出力先は、以下の3種類があります。
オプション
以下は、pg_dumpコマンドの出力先を変更するために使用できるオプションの例です。
-f filename
: ダンプ結果を出力するファイル名を指定します。-Fd
: ダンプ結果を標準出力とファイルの両方に同時に出力します。
例
以下の例は、mydatabase
データベースのダンプ結果を mydump.sql
というファイルに出力する方法を示しています。
pg_dump -f mydump.sql mydatabase
pg_dump -Fc backup mydatabase
補足
- pg_dumpコマンドの出力形式は、
-F
オプションを使用して指定することができます。デフォルトの形式はテキスト形式ですが、カスタム形式やバイナリ形式も指定することができます。 - pg_dumpコマンドは、圧縮オプションやロールバックオプションなど、他にも多くのオプションを提供しています。詳細については、pg_dumpのマニュアルを参照してください。
PostgreSQLにおけるpg_dumpコマンドの出力先に関するサンプルコード
標準出力への出力
pg_dump mydatabase
このコマンドは、mydatabase
データベースのダンプ結果を標準出力に出力します。ダンプ結果は、ターミナルウィンドウに表示されます。
ファイルへの出力
pg_dump -f mydump.sql mydatabase
このコマンドは、mydatabase
データベースのダンプ結果を mydump.sql
というファイルに出力します。ダンプ結果は、mydump.sql
ファイルに保存されます。
ディレクトリへの出力
pg_dump -Fc backup mydatabase
このコマンドは、mydatabase
データベースのダンプ結果を backup
というディレクトリに出力します。各テーブルまたはスキーマオブジェクトは、個別のファイルに出力されます。
pg_dump -f mydump.sql.gz -c mydatabase
特定のテーブルへの出力
pg_dump -t mytable1 -t mytable2 mydatabase
このコマンドは、mydatabase
データベースの mytable1
および mytable2
テーブルのみのダンプ結果を標準出力に出力します。
スキーマのみの出力
pg_dump -s myschema mydatabase
所有者と権限のダンプ
pg_dump -O -U myuser mydatabase
このコマンドは、mydatabase
データベースのオブジェクトの所有者と権限に関する情報をダンプ結果に含めます。
カスタムフォーマットでの出力
pg_dump -f mydump.custom mydatabase -F custom
このコマンドは、mydatabase
データベースのダンプ結果を mydump.custom
というファイルに custom
フォーマットで出力します。フォーマットの詳細については、pg_dumpのマニュアルを参照してください。
これらのサンプルコードは、pg_dumpコマンドの基本的な使用方法を示しています。pg_dumpコマンドには、ここで説明した以外にも多くのオプションと機能があります。詳細については、pg_dumpのマニュアルを参照してください。
標準出力
pg_dumpコマンドを実行する際に、オプションを何も指定しない場合、出力は標準出力に送信されます。つまり、コマンドラインウィンドウにダンプ結果が表示されます。これは、ダンプ結果を簡易的に確認したい場合などに便利です。
pg_dump mydatabase
ファイル
-f
オプションを使用すると、ダンプ結果を指定したファイルに出力することができます。
pg_dump -f mydump.sql mydatabase
ディレクトリ
-Fc
オプションを使用すると、ダンプ結果を指定したディレクトリに出力することができます。この場合、各テーブルまたはスキーマオブジェクトが個別のファイルに出力されます。
pg_dump -Fc backup mydatabase
圧縮
pg_dump -f mydump.sql.gz -c mydatabase
特定のテーブルまたはスキーマ
-t
オプションと -s
オプションを使用して、ダンプ対象のテーブルまたはスキーマを指定することができます。
# 特定のテーブルをダンプ
pg_dump -t mytable1 -t mytable2 mydatabase
# 特定のスキーマをダンプ
pg_dump -s myschema mydatabase
所有者と権限
-O
オプションと -U
オプションを使用して、ダンプ結果にオブジェクトの所有者と権限に関する情報をを含めることができます。
pg_dump -O -U myuser mydatabase
-F
オプションを使用して、ダンプ結果のフォーマットを指定することができます。デフォルトのフォーマットはテキスト形式ですが、カスタムフォーマットやバイナリフォーマットも指定することができます。
pg_dump -f mydump.custom mydatabase -F custom
上記以外にも、pg_dumpコマンドには様々なオプションと機能があります。詳細については、pg_dumpのマニュアルを参照してください。
database postgresql command-line