今回は、PostgreSQLのバックアップについて記載します。
インストール方法やデータベース作成は以前の記事を見てください。
まずはバックアップの種類から。
1.論理バックアップ ←今回
2.物理バックアップ
1.論理バックアップ
データベースに格納されたデータをSQLの形で抽出します。
1)特徴
・バックアップサイズが小さい
・バックアップ時間が短い
・リカバリ時間は長い
・業務影響小
論理バックアップは、DBを停止する必要がないため、業務に対する影響は小さいです。また、バックアップサイズが小さいので、ストレージを圧迫する影響は少ないです。リカバリには一からデータをDBに投入し直すので時間がかかります。
2)バックアップの方法
①pg_dump
PostgreSQLをインストールすると付属している「pg_dump」コマンドを使用して実施します。
出力形式には、スクリプト形式とアーカイブ形式が選択できます。デフォルトはスクリプト形式で、バックアップ時のデータベースを復元するために必要なSQL文の羅列がプレーンテキストの形で出力されます。リストアは「psql」 コマンドを使用します。
スクリプト形式の利点は、プレーンテキストということです。例えば、リストアの際にエラーが発生した場合、ファイルの中身を見てエラーの原因を調べることができ、更にはPostgreSQL固有のSQL文を多少編集すれば、ほかのデータベース製品にもリストアすることができます。
アーカイブ形式はバイナリの形で出力されます。リストアは「psql」ではなく、「pg_restore」 というリストア用のコマンドを使用します。アーカイブ形式の利点は、指定したテーブルのみといったように、データベースを部分的にリストアするなど、柔軟なリストアが可能になっている点です。また、アーカイブ形式には、custom形式とtar形式の2種類があり、custom形式はデフォルトで圧縮されるためファイルサイズが小さくなります。
なお、「pg_dump」 によって作成したバックアップファイルは、CPUアーキテクチャが異なるほかのマシンや、より新しいバージョンのPostgreSQLにもリストアすることができます。
「pg_dump」のスクリプト形式での使用方法は以下の通りです。
「pg_dump データベース名 > バックアップファイル名」
スクリプト形式のリストアは、「pg_restore」 を使用します。
「psql データベース名 < バックアップファイル名」
アーカイブ形式でバックアップは以下のようになります。
「pg_dump -Fc データベース名 バックアップファイル名」
「-F」 オプションがアーカイブ形式の指定で、「c」オプションが「custom形式」を表します。「t 」を指定するとtar形式になります。
アーカイブ形式のリストアは、「pg_restore」 を使用します。
「pg_restore -C -d postgres バックアップファイル名」
「-C」 オプションを付けるとリストア前にデータベースを作成し、「-d」 オプションは、その際に接続するデータベース名を指定します。そのため、「-C」 オプションと併用する場合は、接続さえできればどのデータベースでもかまいません。
「pg_dump」 は、データベース単位でバックアップを取得するコマンドですので、グローバルデータと呼ばれるロールやテーブルスペースなどの情報はバックアップされません。
②pg_dumpall
ロールやテーブルスペースなどの情報も含めてデータベースクラスタ全体をバックアップするときに使うのが、「pg_dumpall」 というコマンドです。
「-g」 オプションを指定して実行することで、グローバルデータのみをバックアップすることも可能です。
「pg_dumpall」は、内部動作としては「pg_dump」を呼び出しているため、ほぼ同じオプションを指定できます。ただし、出力形式を指定する「-F」オプションは使えません。従って、出力は常にスクリプト形式となります。
「pg_dumpall」を使用すると、PostgreSQLを運用しているマシンの変更やPostgreSQLのバージョンアップを簡単に行なえます。
「pg_dump」、「pg_dumpall」では、postgresql.confやpg_hba.confなどの設定ファイルはバックアップされません。
以上、論理バックアップについてです。
次回は、物理バックアップについてです。
0 件のコメント:
コメントを投稿