今回は、Silverの「運用管理 - バックアップ方法(各種バックアップコマンドの使い方)」からの出題です。
-s オプションを指定することで、データを含めず、テーブル定義などだけのバックアップを出力することができる。
出力フォーマットを指定する -F オプションで、p を指定するとテキスト形式、c、d あるいは t を指定するとバイナリ形式のバックアップを出力する。
バイナリ形式のうち、c は物理バックアップ、その他の形式は論理バックアップを出力する。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2021年12月2日
PostgreSQLのデータベースクラスタは、テーブルやデータを格納する独立した複数のデータベースと、ユーザ、ロールやテーブルスペースなど各データベースに共通の情報を格納するグローバルオブジェクトから構成されますが、pg_dump は個々のデータベースのバックアップを取得するコマンドで、ユーザやロールなどグローバルオブジェクトのデータのバックアップを取得することはできません。グローバルオブジェクトをバックアップするにはpg_dumpallコマンドを使います。
pg_dump には様々なオプションがあり、目的や用途に応じて適切な形式でバックアップを取得できます。
デフォルトではテーブル定義とデータの両方を出力するので、そのバックアップをリストアすることで他のデータベースに同じテーブル・データを再現できます。-s オプションを指定するとテーブル定義のみを出力するので、それをリストアすると、データの入っていない空のテーブルが作成されます。例えば、開発環境から本番環境にテーブル定義のみを移行したいときなどに有効でしょう。-a オプションでは、逆にデータのみのバックアップを出力します。リストア先にテーブルが作成済みのときに、データだけ移行する目的で利用できます。
出力ファイルの形式は -F オプションで指定します。p(デフォルト)はplainの意味で、テキスト形式です。実際に pg_dump を実行して、出力されたファイルをテキストエディタで見てみましょう。テーブル定義の CREATE TABLE や、テーブルにデータを入れる COPY など、SQL文が並んだ形式になっています。これをリストアするには psql コマンドを利用します。
p の他には、c、d、t を指定できますが、これらはいずれもバイナリ形式のファイルを出力し、リストアするには pg_restore コマンドを使用します。バイナリ形式と言っても、tar や gzip で圧縮されたものなので、解凍すればどのような形式になっているか確認できるので試してみましょう。これらも実態としてはテーブルやデータを定義するSQLの集まりなので、いずれも論理バックアップです。データベースの物理バックアップを取得するには、データベースクラスタを構成するディレクトリに対して、OSのコマンドを使ってコピーなどの処理を行います。
間違っているものを選ぶ問題なので、正解はEです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.