今回は、Goldの「障害復旧 - 破損クラスタ復旧」からの出題です。
共有システムカタログのインデックスは$PGDATA/global内に作成される。
システムカタログのインデックスが破損している場合、サーバプロセスが起動時に強制終了する可能性がある。
システムカタログの読み込み時にシステムインデックスを無視するにはGUCパラメータのignore_system_indexesを利用する。
インデックスの破損範囲が不明な場合に、データベースの全てのシステムインデックスを再構成するためのSQLコマンドはREINDEX SYSTEMである。
共有システムカタログのいずれかのインデックスが破損した可能性がある場合は、必ずスタンドアロンサーバを使用して修復しなければいけない。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
システムカタログには、テーブルや列の情報等のスキーマメタデータや内部的な情報が格納されています。システムカタログの大半はデータベースを作成する時にテンプレートデータベースからコピーされ、データベース固有のものとなります。
また、一部のシステムカタログは、共有システムカタログとしてデータベースクラスタ内の全てのデータベースで共有されます。共有システムカタログはpg_globalテーブル空間に作成され、pg_globalテーブル空間はPGDATA/globalと対応するため、各オブジェクトはPGDATA/global配下に格納されることになります。
システムカタログのインデックスが破損している場合、サーバプロセスが起動時に強制終了する可能性があります。破損を復旧するためには、まずは破損したインデックス自体を使用しないようにする必要があります。
GUCパラメータのignore_system_indexesをONにすると、システムカタログの読み込み時にインデックスが読み込まれないようになります。このパラメータはinitdb時に作成されるpostgresql.confには記載されていないため、新たに追記する必要があります。
その後は、SQLコマンドであるREINDEX SYSTEMを利用すれば、共有システムカタログも含めたシステムカタログに対する全てのインデックスが再作成されます。
また、破損したインデックス自体を使用しない方法として、システムインデックスを無視する起動時のパラメータ-Pを利用してスタンドアロンサーバを使用する方法もあります。
正解:E
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.