次の手順では、各トランザクション・ログをデータベースに適用して統合データベースをリカバリする方法について説明します。SQL Anywhere データベース・サーバによって統合データベースを自動的にリカバリする場合は、統合データベースの自動リカバリを参照してください。
データベースとトランザクション・ログ・ファイルのコピーを作成します。この手順では、データベース・ファイルは事前にバックアップされており、テープなどに保存されていることを想定しています。
テンポラリ・ディレクトリを作成します。
データベース (.db) ファイルの最新のバックアップをテープからテンポラリ・ディレクトリにリストアします。トランザクション・ログ・ファイルはリストアしません。
テンポラリ・ディレクトリで、次の処理を実行します。
データベースのバックアップ・コピーを開始します。
-a オプションを使用して、古いトランザクション・ログを適用します。
データベースを停止します。
現在のトランザクション・ログと -a オプションを使用してデータベースを起動し、トランザクションを適用してデータベース・ファイルを最新の状態に更新します。
データベースを停止します。
データベースをバックアップします。
データベースを運用ディレクトリにコピーします。
データベースを起動します。
新しいアクティビティは、すべて現行のトランザクション・ログに追加されます。
c:\dbdir\cons.db という名前の統合データベース・ファイル、トランザクション・ログ・ファイル c:\dbdir\cons.log、トランザクション・ログ・ミラー・ファイル d:\mirdir\cons.mlg があると想定します。
毎週実行するフル・バックアップに加え、次のコマンドを使用してインクリメンタル・バックアップを毎日実行しているものとします。
dbbackup -c "UID=DBA;PWD=sql" -r -n -t e:\backdir |
このコマンドは、トランザクション・ログ cons.log をディレクトリ e:\backdir にバックアップします。トランザクション・ログの名前は datexx.log (date はそのときの日付、xx はアルファベット順の次の英字) に変更され、新しいトランザクション・ログが作成されます。その後、ディレクトリ e:\backdir がサード・パーティ・ユーティリティを使用してバックアップされます。
ここでは、名前を変更したトランザクション・ログ・ファイルを示すディレクトリを任意で指定して Message Agent (dbremote) を実行します。次に例を示します。
dbremote -c "UID=DBA;PWD=sql" c:\dbdir |
毎週実行しているバックアップの 3 日後に、ディスク・ブロック破損のためにデータベース・ファイルが破壊されてしまったと想定します。
次の手順を使用して、メディア障害からリカバリします。
トランザクション・ログ・ミラー・ファイル d:\mirdir\cons.mlg をバックアップします。
リカバリを実行するテンポラリ・ディレクトリを作成します。この例では c:\recover というディレクトリを作成します。
データベース・ファイル cons.db の最新バックアップを c:\recover\cons.db にリストアします。
名前を変更したトランザクション・ログを、次の順序で適用します。
dbeng11 -a c:\dbdir\dateAA.log c:\recover\cons.db dbeng11 -a c:\dbdir\dateAB.log c:\recover\cons.db |
現在のトランザクション・ログ d:\mirdir\cons.log を、リカバリ・ディレクトリにコピーし、c:\recover\cons.log を作成します。
次のコマンドを使用してデータベースを起動します。
dbeng11 c:\recover\cons.db |
データベース・サーバを停止します。
リカバリされたデータベースとトランザクション・ログを c:\recover からバックアップします。
c:\recover から実際に使用する適切なディレクトリに、ファイルをコピーします。
c:\recover\cons.db を c:\dbdir\cons.db にコピーします。
c:\recover\cons.log を c:\dbdir\cons.log と d:\mirdir\cons.mlg にコピーします。
システムを通常どおり再起動します。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |