PostgreSQLのバックアップ方式まとめ
目次
概要
PostgreSQLでは様々なバックアップ方式を実装しています。 それぞれの特徴や実行方法についてまとめます。
構成
サーバ構成
OSバージョン
Red Hat Enterprise Linux 5.9 x86_64
パッケージ一覧
postgresql90-9.0.8-1PGDG.rhel6.x86_64.rpm
postgresql90-libs-9.0.8-1PGDG.rhel6.x86_64.rpm
postgresql90-server-9.0.8-1PGDG.rhel6.x86_64.rpm
バックアップ方式
まとめ
バックアップ方式毎の特徴を以下にまとめます。
物理/論理 | オンライン /オフライン | コマンド | 取得対象 | 取得形式 | リストア方法 |
---|---|---|---|---|---|
物理 バックアップ | オフライン バックアップ | cp | tar | データベースクラスタ | OSファイル | cp | tar |
論理 バックアップ | オンライン バックアップ | pg_dump | データベース | スクリプト形式 | psql |
カスタム形式 | pg_restore | ||||
tar形式 | pg_restore | ||||
pg_dumpall | データベースクラスタ | スクリプト形式 | psql |
用語の定義
物理バックアップ
データの内容を意識せずに取得するバックアップです。 通常はOS(LinuxやWindows)のファイルシステム上のファイルとしてバップアップします。 そのファイルの中のデータがどうなっているかは意識しません。 そのため異なるバージョンのPostgreSQLや異なるDBMSにはデータをリストアすることはできません。
論理バックアップ
データの内容を意識したバックアップです。データベースの内容をSQL形式でバックアップします。 バックアップデータはcreate文やinsert文の羅列になります。 そのため異なるバージョンのPostgreSQLや異なるDBMSにもデータをリストアすることができます。 論理バックアップでは不要領域やindexのデータが含まれないため、物理バックアップに比べて 一般的にデータサイズが小さくなります。
オフラインバックアップ
PostgreSQLインスタンスを停止して実行するバックアップのことです。
オンラインバックアップ
PostgreSQLインスタンスを起動したままで実行するバックアップのことです。
データベースクラスタ
複数のデータベース、グローバルオブジェクト(ロールやテーブルスペース) などデータベースクラスタ全体を対象にバックアップします。
データベース
データベースクラスタ内のデータベースを対象にバックアップします。 ロールやテーブルスペースなどのグローバルオブジェクトは個別のデータベースと 紐付くものではないため、データベース単位のバックアップでは取得されません。 リストアする際には、先にロールなどの作成が必要となります。