今回は、Silverの「S2 運用管理 - S2.4 バックアップ方法」からの出題です。
pg_dumpの実行にはデータベースのスーパーユーザー権限が必要である。
テーブルのデータだけでなく、CREATE USERやCREATE ROLEで作成したユーザやロールのデータもバックアップできる。
テーブルのデータだけでなく、GRANTやREVOKEで付与・剥奪したテーブルへのアクセス権限もバックアップできる。
データはダンプせず、CREATE TABLEなどのテーブル定義だけをバックアップすることができる。
バイナリ形式でバックアップを作成した場合、データのリストア先は同じアーキテクチャのサーバに制限される。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2014年9月3日
pg_dumpはデータベースの論理的なバックアップを作成します。「論理的」とは、データベース内のデータとバックアップのデータが同じ内容である、ということで、実際にはCREATE TABLEやINSERTなどのSQL文の形式でバックアップを作ります。これと対になるのは、データファイルのコピーを作成する「物理的」なバックアップです。物理的バックアップからリストアすると、データファイルやデータブロック内の構造もそのまま保持されますが、論理的バックアップからリストアするとデータファイルの内容はまったく異なったものになります。
論理的バックアップは、異なるアーキテクチャやバージョンのデータベースサーバにリストアすることができます。これはバックアップがバイナリ形式であっても制限されません。
pg_dumpを実行するには、バックアップ対象となるデータベース内のすべてのオブジェクトに対して適切な権限が必要です。アクセス権限のないオブジェクトをバックアップしようとするとエラーになります。しかし、必ずしもスーパーユーザーで実行する必要はありません。
PostgreSQLではユーザやロールの情報はデータベースクラスタのグローバルオブジェクトとして保持しており、各データベースには含まれないため、pg_dumpではバックアップできません。データベースクラスタ全体のバックアップをするpg_dumpallを使う必要があります。GRANTやREVOKEによるアクセス権限は、各データベース内にありますから、これはpg_dumpでバックアップされます。
pg_dumpを-sまたは--schema-onlyオプションで実行すると、テーブル定義だけをバックアップできます。逆に、テーブル定義は出力せず、データだけをダンプする-aまたは--data-onlyというオプションもあります。
従って、正解はCとDです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.