ライブデータベースが破損した場合は、ホットバックアップがバックアップの最初の選択肢となります。バックアップを復元するには、次の手順を実行します。
破損したライブデータベースのディレクトリで、適用されていない、または書き込み可能な状態のログファイルを識別します。
書き込み可能なログを閉じます。このログには、最新のトランザクションが含まれています。
新規の (復元) ディレクトリを作成します。
現在のホットバックアップのコピーを、新規の復元データベースのディレクトリにコピーします。
log.* ファイルを、破損したライブデータベースのディレィトリから、新規の復元データベースのディレクトリにコピーします。
データベースのアーカイブコピーを保持している場合は、ライブデータベースに適用されなかったログをアーカイブディレクトリにコピーします。
新規の復元データベースに対して指定された -c -h オプションを指定して、db_recover を実行します。
たとえば、新規の復元ディレクトリの名前が recoverydb の場合、コマンドは次のようになります。
db_recover -c -h recoverydb
log.* ファイルは、新規の復元ディレクトリに残しておきます。
db_recover プログラムではログファイルを新規の復元データベースに適用しましたが、バージョン 4.2 以降、Berkeley DB ではログファイルをそのまま残しておくことを勧めします。
新規の復元ディレクトリ内のデータベースファイルに対して、db_verify を実行します。db_verify を実行するには、次の手順を実行します。
次のコマンドを実行し、Calendar Server を停止します。
cd /opt/SUNWics5/cal/sbin
./stop-cal
このコマンドを使用し、Calendar Server データベース (csdb) のコピーをもう 1 つ作成します。
cp -Rp /var/opt/SUNWics5/csdb /var/opt/SUNWics5/csdb.db_verify
csdb のコピーに対して db_verify を実行します。
db_verify を、元の csdb に対して実行しないでください。
LD_LIBRARY_PATH=/opt/SUNWics5/cal/lib export LD_LIBRARY_PATH cd /opt/SUNWics5/cal/tools/unsupported/bin ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50alarms.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50calprops.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50events.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50gse.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50journals.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50recurring.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db ./db_verify -o -h /var/opt/SUNWics5/csdb.db_verify ics50deletelog.db
ics50deletelog.db に対し、-o オプションを指定して db_verify を実行します。
db_verify が正常に実行されると、エラーメッセージは表示されません。データベースファイルが破損していると、エラーメッセージがスローされます。次に例を示します。
./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db db_verify:Page 612: last item on page sorted greater than parent entry db_verify: Page 612: incorrect next_pgno 885 found in leaf chain (should be 501) db_verify: Page 0: page 501 encountered a second time on free list db_verify: DB->verify: ics50todos.db: DB_VERIFY_BAD: Database verification failed |
新規の復元ディレクトリに対して、csdb -v list を実行します。
新規の復元ディレクトリで 上記の 3 つの手順を実行したら、古い破損したライブデータベースを新規の復元ディレクトリと置き換えます。
新しいスナップショットとして機能させるために、新規のライブデータベースをホットバックアップのディレクトリにコピーします。
次の定期的なスナップショットが取得されるまで、すべての新しいログがこのコピーに適用されます。
Calendar Server を起動します。
新規の復元ディレクトリでいずれかの手順に失敗した場合は、次のようにして破損していない古いホットバックアップを特定します。
ホットバックアップを新しい順から逆にたどり、各ファイルに対して順番に db_verify および csdb -v list を実行して、破損していない最新のコピーを見つけます。
パスする最初のホットバックアップコピーが、ライブデータベースのディレクトリに復元されます。
「ホットバックアップを復元するには」で説明している手順に従い、破損したライブデータベースを新規のホットバックアップと置き換えます。最初に、必ず 「22.5.8.1 復元する前に」をお読みください。
ホットバックアップがどれも動作せず、アーカイブバックアップがない場合は、テクニカルサポートに問い合わせてください。アーカイブバックアップがある場合は、「アーカイブバックアップを復元するには」にある手順を実行します。「22.5.8.1 復元する前に」も参照してください。