9.3.1 バックアップの取得方法
ここでは,バックアップを取得するタイミング,バックアップの種類,およびバックアップを取得する手順について説明します。
マルチノード機能を使用している場合のバックアップの取得方法については,「14.8 データベースのバックアップ(マルチノード機能の使用時)」を参照してください。
(1) バックアップを取得するタイミング
原則として,障害発生時などにデータベースを回復するために,定期的にバックアップを取得するようにしてください。特に,次に示す運用項目を実施する前には,必ずバックアップを取得してください。
-
システムログを取得しないでadbimportコマンドを実行する場合
-
システムログを取得しないでadbidxrebuildコマンドを実行する場合
-
システムログを取得しないでadbmergechunkコマンドを実行する場合
-
adbmodareaコマンドを実行する場合
-
HADBサーバのバージョンアップを実施する場合
(2) バックアップの種類
データベースのバックアップには,次の2種類があります。
-
データ用DBエリアファイルを含む必要なファイルすべての,バックアップを取得します。
-
HADBサーバの管理情報など必要最低限のファイルだけ,バックアップを取得します。データ用DBエリアファイルについては,バックアップを取得しません。
データベースのバックアップを取得する場合,原則として,フルバックアップでバックアップを取得してください。ただし,次に示すケースに該当する場合は,簡易バックアップを適用できます。
- ■簡易バックアップでもよいケース
-
HADBサーバをバージョンアップしたあとで,データベースを一度も更新しないで,すぐにバージョンアップ前の状態に戻す場合,簡易バックアップを適用できます。
例えば,バージョンアップのテストを実施するために,いったんバージョンアップしたHADBサーバを,すぐに旧バージョンに戻す場合が該当します。
- 注意事項
-
-
一度でもデータベースを更新する場合は,必ずフルバックアップでバックアップを取得してください。フルバックアップでバックアップを取得していないと,データベースを更新した場合に,更新前の状態に回復できません。
-
バージョンアップ後,次に示す操作だけしか実行していない場合は,簡易バックアップを使用してバージョンアップ前の状態に戻すことができます。
・SELECT文の実行
・COMMIT文の実行
・ROLLBACK文の実行
・adblsコマンドなどの実行
上記以外の操作を実行した場合,データベースの整合性が取れなくなるため,簡易バックアップを使用してバージョンアップ前の状態に戻すことができなくなります。
なお,adblsコマンド以外にも実行可能なコマンドがあります。実行可能なコマンドについては,マニュアル「HADB コマンドリファレンス」の「コマンドの一覧」にある表「コマンドの一覧(簡易バックアップを使用したデータベースの回復)」を参照してください。
-
(3) バックアップを取得する手順
データベースのバックアップを取得する手順を次に示します。
|
|
図中の各手順の詳細を次で説明します。なお,図中の番号は,次に示す各手順の番号と対応しています。
なお,手順2.の「データベースの更新を抑止する」で,「稼働モードを静止モードに変更する」を選択する場合は,手順1.を飛ばして手順2.から開始してください。
-
更新不可状態の実表の有無を確認する
データベースのバックアップを取得する前に,更新不可状態の実表がないことを確認する必要があります。adbdbstatusコマンドに,-c tableオプションを指定して実行してください。なお,手順2.でHADBサーバの稼働モードを静止モードに変更する場合は,手順1.の実施は不要です。手順2.に進んでください。
すべての実表の状態を調べる場合の指定例を次に示します。
adbdbstatus -c table
出力結果のNon-updatable列に,non-updatableが出力されていないことを確認してください。non-updatableが出力されている場合,実表が更新不可状態になっています。「13.8.1 実表が更新不可状態になった場合」を参照して,更新不可状態を解除してください。
- 注意事項
-
更新不可状態の実表がある状態でバックアップを取得し,そのバックアップからデータベースを回復してしまうと,実表の更新不可状態を解除できなくなるおそれがあります。実表が更新不可状態の場合,検索処理や更新処理を実行できません。
-
データベースの更新を抑止する
データベースのバックアップを取得する前に,データベースの更新を抑止する必要があります。次に示すどちらかを必ず実施してください。
-
HADBサーバを正常終了する
HADBサーバを終了しても問題ない場合は,adbstopコマンドを実行して,HADBサーバを正常終了してください。
-
HADBサーバの稼働モードを静止モードに変更する
HADBサーバが稼働中で終了できない場合は,adbchgsrvmode --quiescenceコマンドを実行して,稼働モードを静止モードに変更してください。
- 注意事項
-
稼働モードを静止モードにしてバックアップを取得した場合,データベースの回復後にHADBサーバを開始すると,HADBサーバは再開始します。この場合,バックアップ取得後にサーバ定義を変更していると,取得したバックアップから回復したあとでHADBサーバを再開始できないことがあります。そのため,静止モードにしてバックアップを取得する場合は,手順6.でサーバ定義ファイルのバックアップをあわせて取得することを推奨します。なお,サーバ定義の変更によって再開始できない場合は,KFAA50024-EメッセージおよびKFAA50025-Eメッセージを基に対策してください。
-
-
HADBサーバの状態を確認する
手順2.が完了したら,HADBサーバの状態を確認します。次に示すコマンドを実行して,データベースの更新を抑止できていることを確認してください。
adbls -d srv
実行結果のSTATUSの項目を確認してください。
-
HADBサーバを正常終了した場合
出力項目のSTATUSが,STOPになっていることを確認してください。確認したら,手順5.に進んでください。
-
HADBサーバの稼働モードを静止モードに変更した場合
出力項目のSTATUSが,QUIESCEになっていることを確認してください。確認したら,手順4.に進んでください。
-
-
更新不可状態の実表の有無を確認する
データベースのバックアップを取得する前に,更新不可状態の実表がないことを確認する必要があります。adbdbstatusコマンドに,-c tableオプションを指定して実行してください。
なお,手順2.でHADBサーバを正常終了した場合は,手順5.に進んでください。
すべての実表の状態を調べる場合の指定例を次に示します。
adbdbstatus -c table
出力結果のNon-updatable列に,non-updatableが出力されていないことを確認してください。non-updatableが出力されている場合,実表が更新不可状態になっています。「13.8.1 実表が更新不可状態になった場合」を参照して,更新不可状態を解除してください。
-
DBディレクトリとアーカイブディレクトリのバックアップを取得する
データベースの更新を抑止したら,バックアップを取得できます。バックアップを取得する必要があるファイルは,すべてバックアップを取得してください。一部のファイルだけバックアップを取得すると,バックアップから回復するときにデータベースの整合性が取れなくなり,その後の動作を保証できません。
対象のファイルがシンボリックリンクファイルの場合は,リンク先のファイルおよびブロックスペシャルファイルについても,バックアップを取得してください。なお,バックアップを取得するファイルは,スパースファイルにしないでください。
バックアップを取得する必要があるファイルを次の表に示します。
表9‒6 バックアップを取得する必要があるファイルの一覧 項番
バックアップを取得する必要があるファイル
ファイルの格納先
ファイルの種類
バックアップ取得の有無
フルバックアップ
簡易バックアップ
1
コマンドステータスファイル
$DBDIR/ADBSYS/ADBUTL
レギュラーファイル
○
○
2
システムログファイル
$DBDIR/ADBSYS/ADBSLG
レギュラーファイル
○
○
3
ステータスファイル
$DBDIR/ADBSYS/ADBSTS
レギュラーファイル
○
○
4
マスタディレクトリ用DBエリアファイル
$DBDIR/ADBMST
レギュラーファイル,またはブロックスペシャルファイル
○
○
5
ディクショナリ用DBエリアファイル
$DBDIR/ADBDIC
レギュラーファイル,またはブロックスペシャルファイル
○
○
6
システム表用DBエリアファイル
$DBDIR/ADBSTBL
レギュラーファイル,またはブロックスペシャルファイル
○
○
7
作業表用DBエリアファイル
$DBDIR/ADBWRK
レギュラーファイル,またはブロックスペシャルファイル
×※1
×※1
8
データ用DBエリアを構成するすべてのファイル
$DBDIR/DBAREA※2
レギュラーファイル,またはブロックスペシャルファイル
○
×
9
アーカイブファイル
アーカイブディレクトリ※3
レギュラーファイル
○
×
- (凡例)
-
○:バックアップの取得が必要です。
×:バックアップの取得は不要です。
- 注※1
-
作業表用DBエリアにブロックスペシャルファイルを指定している場合は,DBエリアを回復したあとに,サーバ定義adb_blk_path_wrkオペランドを指定してからHADBサーバを開始してください。サーバ定義adb_blk_path_wrkオペランドについては,「7.6.2(1) システム構成に関するオペランド(set形式)」のadb_blk_path_wrkオペランドを参照ください。
- 注※2
-
adbinitコマンドまたはadbmodareaコマンドで,ユーザが指定した名称になります。
- 注※3
-
CREATE TABLE文のチャンクアーカイブ指定のARCHIVEDIRで指定したディレクトリです。
- 参考
-
次に示すディレクトリ下のファイルについては,バックアップの取得は不要です。
-
作業用ディレクトリ下($DBDIR/ADBWORK)のファイル
-
障害情報(コアファイル)の出力先ディレクトリ下($DBDIR/SPOOL)のファイル
サーバ定義adb_core_pathオペランドを指定した場合は,adb_core_pathオペランドに指定したディレクトリになります。
なお,これらのファイルも,上記の表に示すファイルと一緒にバックアップを取得して,バックアップから回復しても問題はありません。
-
-
DBディレクトリとアーカイブディレクトリ以外のディレクトリのバックアップを取得する
ディスク障害などのトラブルが発生し,サーバディレクトリまたはクライアントディレクトリの回復が必要になった場合に備えて,次に示すファイルもあわせてバックアップを取得してください。これらのファイルは,データベースの回復には直接は使用しません。
HADBサーバの場合
-
サーバディレクトリ下($ADBDIR/conf)に格納されているすべての定義ファイル
-
サーバディレクトリ下($ADBDIR)にユーザがファイルを作成している場合,作成したすべてのファイル
HADBクライアントの場合
-
クライアントディレクトリ下(Windows版の場合は%ADBCLTDIR%¥conf,Linux版の場合は$ADBCLTDIR/conf)に格納されている定義ファイル
-
クライアントディレクトリ下(Windows版の場合は%ADBCLTDIR%,Linux版の場合は$ADBCLTDIR)にユーザがファイルを作成している場合,作成したすべてのファイル
-
-
データベースの更新抑止を解除する
バックアップの取得が完了したら,データベースの更新抑止を解除します。
-
手順2.でHADBサーバを正常終了した場合
adbstartコマンドを実行して,HADBサーバを開始してください。
-
手順2.でHADBサーバの稼働モードを静止モードに変更した場合
adbchgsrvmode --normalコマンドを実行して,稼働モードを通常モードに変更してください。
これで,バックアップの取得は完了です。
-