今回は、Silverの「S2 運用管理 - S2.4 バックアップ方法(各種バックアップコマンドの使い方)」からの出題です。
-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です。
例題解説についてのご質問やご意見は以下からご連絡ください。
※本例題および解説は、例題作成者から提供されたものです。実際の試験問題とは異なります。
※実際の試験問題に関するお問い合わせについてはご回答いたしかねます。あからじめご了承ください。
© EDUCO All Rights Reserved.