データベースの媒体が破壊された場合のデータベースのリカバリ方法について説明します。
データベースの媒体に入出力障害が発生した場合、システムメッセージ“qdg13039u”が出力されます。この場合のリカバリは、メディアリカバリにより行います。
なお、ここでの媒体障害とは、PRIMECLUSTER GDSミラーボリュームに割り当てたデータベースにまったくアクセスできない状態となり、上記システムメッセージが出力される障害のことです。
媒体障害が発生した場合の、障害の検出からリカバリまでの手順を説明します。
運用ごとのリカバリ操作の手順や操作例の詳細は、“15.5.2.2 アーカイブログ適用によるリカバリ”以降で説明します。
システムメッセージの確認および障害ディスクの特定
障害ディスク上のデータベーススペースの切離し
障害ディスクのリカバリ
障害データベーススペースのリカバリ
在庫管理DBに属する在庫表DSI1、製品名IXDSI1、在庫表DSI2、製品名IXDSI2が、PRIMECLUSTER GDSのボリュームに以下のように配置されている場合を例にとって、検出方法と確認方法を説明します。
DBS名: データベーススペース名
データベースのアクセス中に媒体障害が発生した場合、Symfoware/RDBは、以下のメッセージを出力します。このメッセージから、媒体障害が発生したデータベース名、データベーススペース名およびデータベーススペースが割り付けられているローデバイス名を確認してください。
rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を 検出しました DB名='在庫管理DB' DBS名='DBSP_1' デバイス名 ='/dev/sfdsk/class0001/rdsk/disk010001.volume0001' 物理ブロック番号 ='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス 禁止状態にしました DB名='在庫管理DB' DSI名='在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック番号='99' (システム名=rdbsys1)
この例での、ディスク上のデータベーススペース情報一覧を以下に示します。
[ディスク上のデータベーススペース情報一覧]
在庫管理DB.DBSP_1 /dev/sfdsk/class0001/dsk/volume0001 在庫管理DB.DBSP_2 /dev/sfdsk/class0002/dsk/volume0002
メッセージに出力されたデバイス名から媒体障害が発生したディスクがPRIMECLUSTER GDSのボリュームであることがわかるので、PRIMECLUSTER GDS運用管理ビューから、PRIMECLUSTER GDSのボリューム名の属するミラーディスクグループに他のボリュームがないか確認します。
参照
運用管理ビューの詳細については、“PRIMECLUSTER Global Disk Services 説明書”を参照してください。
媒体障害からのリカバリを行うためにはディスクを交換します。交換作業を行う間、そのディスク上のすべてのデータベーススペースに対するアクセスを抑止する必要があります。そのため、Symfoware/RDBから一時的にそれらのデータベーススペースを切り離します。切り離されたすべてのデータベーススペースには、アクセス禁止状態が設定されます。データベーススペースの切離しは、rdbexspcコマンドのmdetachオプションにより行います。
$ rdbexspc -mdetach -p 在庫管理DB.DBSP_1
障害ディスクを交換します。
参照
PRIMECLUSTER GDSと連携している場合のボリュームのリカバリ方法については、“PRIMECLUSTER Global Disk Services 説明書”を参照してください。
媒体障害が発生したディスク上に存在したデータベーススペースを、rdbmrrcvコマンドによりリカバリします。
rdbmrrcvコマンド処理により退避データベーススペースのリカバリ処理が行われます。
この例では、データベーススペース名DBSP_1のリカバリを行っています。
$ rdbmrrcv -M -p 在庫管理DB.DBSP_1 -f /back -w /tmp
まず、媒体障害が発生したディスク上に存在したデータベーススペースを、バックアップシェルスクリプトによって採取した退避データベーススペースの内容でリカバリします。その後、媒体障害が発生したディスク上に存在したデータベーススペースを、rdbmrrcvコマンドによりリカバリします。
この例では、データベーススペース名DBSP_1のリカバリを行っています。
リカバリ作業 … 退避データベーススペースの内容をリカバリしたボリュームにリカバリ $ rdbmrrcv -M -o -p 在庫管理DB.DBSP_1 -f /back -w /tmp
Advanced Backup Controllerのオンラインバックアップを利用し、アーカイブログと連携した運用を行っている場合のリカバリ操作の手順とリカバリ操作例を以下に示します。
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成されたデータベースをPRIMECLUSTER GDSと連携したAdvanced Backup Controllerで運用した例を示しています。
DBSP: データベーススペース
(1) Advanced Backup Controllerにより退避データを ――― rdbmrdmpコマンド 取得します。 (2) 目的業務を実行します。 (3) アーカイブログファイルの強制切替えを行います。 ――― rdblogコマンド (Sオプションかつ aオプション) (4) Advanced Backup Controller により退避データを ――― rdbmrdmpコマンド 取得します。 (5) 不要になった退避データを破棄します。 ――― rdbmrdmpコマンド (Dオプション) (6) アーカイブログを破棄します。 ――― rdblogコマンド (Rオプションかつ aオプション) (7) 目的業務を実行します。 ★ 媒体障害発生 (8) デバイス異常の影響範囲を確認します。 ――― PRIMECLUTER GDS運用管理ビュー (メイン画面) 他ボリュームがある場合 → (9)へ 他ボリュームがない場合 → (10)へ (9) ディスク上のデータベーススペース名を確認します。 ――― rdbexspcコマンド (mpオプション) (10) 媒体障害が発生したデータベーススペースを切り離 ――― rdbexspcコマンド します。 (mdetachオプション) (11) ミラーボリュームをリカバリします。 ――― PRIMECLUTER GDS作業 (12) 媒体障害が発生していたデータベーススペースを ――― rdbmrrcvコマンド メディアリカバリモードで最新状態にリカバリします。 (Mオプション) (13) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ rdbmrdmp -t /backgrp/bkgrp1a -f /back_a 目的業務の実行 $ rdblog -S -a $ rdbmrdmp -t /backgrp/bkgrp1b -f /back_b $ rdbmrdmp -D -t /backgrp/bkgrp1a -f /back_a $ rdblog -R -a 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev/sfdsk/class0001/rdsk/disk010001.volume0001' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名= '在庫管理DB' DSI名= '在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブ ロック番号='99' (システム名=rdbsys1) PRIMECLUSTER GDS運用管理ビュー … デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 PRIMECLUSTER GDS作業 … ミラーボリュームのリカバリ $ rdbmrrcv -M -p 在庫管理DB.DBSP_1 -f /back_b -w /tmp rdb: INFO: qdg02654i:rdbmrrcvコマンドの処理を開始します(システム名=rdbsys1) rdb: INFO: qdg02655i:rdbmrrcvコマンドの処理が正常終了しました(システム名=rdbsys1) 目的業務の再実行
データベーススペースリスト/backgrp/bkgrp1aの内容を以下に示します。
在庫管理DB.DBSP_1 sdx13 在庫管理DB.DBSP_2 sdx23
データベーススペースリスト/backgrp/bkgrp1bの内容を以下に示します。
在庫管理DB.DBSP_1 sdx14 在庫管理DB.DBSP_2 sdx24
参考
注意
Advanced Backup Controllerを利用したリカバリは、ロググループまたはデータベーススペース単位に行われます。このため、iオプション指定でrdbsetrpコマンドを実行することによってDSI単位に設定したリカバリポイントを、Advanced Backup Controllerを利用したリカバリ時に使用した場合、リカバリポイント設定時点の状態を保証できません。
以下の運用の場合は、rdbmrrcvコマンドのポイントリカバリモードにより、退避データ取得時点の状態にデータベースをリカバリします。
バッチ業務中などでリカバリを適用しない運用の場合
バックアップ対象データベースにOBJECT構造のDSIが含まれている場合
リカバリ時に使用する退避データは、rdbmrdmpコマンド実行時にRオプションを指定して取得したものです。
ここではDBSP_1とDBSP_2の2つのデータベーススペースにより構成されたデータベースをPRIMECLUTER GDSと連携したAdvanced Backup Controllerで運用した例を示しています。
DBSP: データベーススペース
(1) 対象データベーススペース群に存在するすべての ――― rdbrtrコマンド DSIに“更新抑止”の利用規定を設定します。 (rwオプション) (2) Advanced Backup Controller により退避データを ――― rdbmrdmpコマンド 取得します。 (Rオプション) (3) 目的業務を実行します。 ★ 媒体障害発生 (4) デバイス異常の影響範囲を確認します。 ――― PRIMECLUTER GDS運用管理ビュー (メイン画面) 他ボリュームがある場合 → (5)へ 他ボリュームがない場合 → (6)へ (5) ディスク上のデータベーススペース名を確認します。 ――― rdbexspcコマンド (mpオプション) (6) 媒体障害が発生したデータベーススペースを切り離し ――― rdbexspcコマンド ます。 (mdetachオプション) (7) ミラーボリュームをリカバリします。 ――― PRIMECLUTER GDS作業 (8) 同時にリカバリするデータベーススペースを“アクセス ――― rdbinhコマンド 禁止”にします。 (pオプション) (9) 媒体障害が発生していたデータベーススペースを ――― rdbmrrcvコマンド ポイントリカバリモードでバックアップ取得時点に (Pオプション) リカバリします。 (10) 目的業務を再実行します。
以下の例は、デバイス異常の影響範囲に他ボリュームがない場合を想定しています。
$ rdbrtr -i 在庫管理DB.在庫表DSI1 -rw $ rdbrtr -i 在庫管理DB.在庫表DSI2 -rw $ rdbmrdmp -R -t /backgrp/bkgrp1 -f /back 目的業務の実行 rdb: ERROR: qdg13039u:データベーススペースのデバイスに異常を検出しました DB名='在庫 管理DB' DBS名='DBSP_1' デバイス名='/dev/sfdsk/class0001/rdsk/disk010001.volume0001' 物理ブロック番号='99' 原因コード='1' 調査コード='2 0 ' (システム名=rdbsys1) rdb: ERROR: qdg03650u:入出力障害のためデータベースをアクセス禁止状態にしました DB名= '在庫管理DB' DSI名= '在庫表DSI1' ページ番号='10' DBS名='DBSP_1' 物理ブロック番号='99' (システム名=rdbsys1) PRIMECLUSTER GDS運用管理ビュー … デバイス異常の影響範囲を確認 $ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 PRIMECLUTER GDS作業 … ミラーボリュームのリカバリ $ rdbinh -p 在庫管理DB.DBSP_2 $ rdbmrrcv -P -t /backgrp/bkgrp1 -f /back -w /tmp rdb: INFO: qdg02654i:rdbmrrcvコマンドの処理を開始します (システム名=rdbsys1) rdb: INFO: qdg02655i:rdbmrrcvコマンドの処理が正常終了しました (システム名=rdbsys1) 目的業務の再実行
データベーススペースリスト/backgrp/bkgrp1の内容を以下に示します。
在庫管理DB.DBSP_1 sdx14 在庫管理DB.DBSP_2 sdx24
PRIMECLUSTER GDSと連携した運用で、外部媒体に出力された退避データを用いてリカバリを行う場合、退避データベーススペースであったスライスの状態を、その退避データを採取した時と同一のアクセスパスで利用可能な状態に戻してからリカバリを行う必要があります。
参照
スライスの状態変更についての詳細は、“PRIMECLUSTER Global Disk Services 説明書”を参照してください。
バックアップ時と同一のtemp状態になっているミラースライスに対して、外部媒体にバックアップしてあった退避データベーススペースのデータをリカバリします。
その後、同じくバックアップしてあったリカバリ制御ファイルを利用して、rdbmrrcvコマンドを実行することにより、対象データベースをリカバリします。
DBSP: データベーススペース
オペレータ操作 … /dev/st0にリカバリ制御ファイルがバックアップされている磁気テープ01を 装着する。 $ cd /back $ tar xvf /dev/st0 オペレータ操作 … /dev/st0からリカバリ制御ファイルがバックアップされている磁気テープ01を 離脱する。 オペレータ操作 … ミラースライスのアクセスモードを“読み書き用”に設定する。 オペレータ操作 … /dev/st0に退避データベーススペースがバックアップされている磁気テープ02を 装着する。 $ rdbcpraw -i /dev/st0 -o /dev/sfdsk/class0001/rdsk/disk010001.volume0001 オペレータ操作 … /dev/st0から退避データベーススペースがバックアップされている磁気テープ02を 離脱する。 $ rdbmrrcv -M -p 在庫管理DB.DBSP_1 -f /back -w /tmp
備考.ミラースライスのアクセスモードは、PRIMECLUSTER GDSのsdxattrコマンドを使用して設定してください。
参照
sdxttrコマンドの詳細については、manコマンドを利用してPRIMECLUSTER GDSのコマンドリファレンスを参照してください。