- Berkeley DB Reference Guide:
- Transaction Protected Applications
|
|
Recovery procedures
The fourth component of the infrastructure, recovery procedures, concerns
the recoverability of the database. After any application or system
failure, there are two possible approaches to database recovery:
- There is no need for recoverability and all databases can be recreated
from scratch. While these applications may still need transaction
protection for other reasons, recovery will usually consist of removing
the Berkeley DB environment home directory and all files it contains, and then
restarting the application.
- It is necessary to recover information after system or application
failure. In this case, recovery processing must be performed on any
database environments that were active at the time of the failure.
Recovery processing involves running the db_recover utility or
calling the DBENV->open function with the DB_RECOVER or
DB_RECOVER_FATAL flags, for each Berkeley DB environment.
During recovery processing, all database changes made by aborted or
unfinished transactions are undone and all database changes made by
committed transactions are redone, as necessary. Database applications
must not be restarted until recovery completes. After recovery finishes,
the environment is properly initialized so that applications may be
restarted.
If recovery is to be performed, there are two possible types of recovery
processing:
- catastrophic recovery. The Berkeley DB package defines catastrophic
failure to be failure where either the database or log files have been
destroyed or corrupted. For example, catastrophic failure includes the
case where the disk drive on which either the database or logs are stored
has been physically destroyed, or when the system's normal filesystem
recovery on startup is unable to bring the database and log files to a
consistent state. This is often difficult to detect, and perhaps the most
common sign of the need for catastrophic recovery is when the normal
recovery procedures fail.
If the failure is catastrophic, the most recent snapshot of the database
files and any archived log files must be restored onto the system. If
any log files since the last snapshot are available, they should be placed
into the Berkeley DB environment directory where recovery will be performed.
Then run the db_recover utility, specifying its -c option,
or call the DBENV->open function specifying the DB_RECOVER_FATAL
flag. The catastrophic recovery process will review the logs and database
files to bring the environment's database to a consistent state as of the
time of the last uncorrupted log file that is found. It is important to
realize that only transactions committed before that date will appear in
the databases.
- normal or non-catastrophic recovery. If the failure
is non-catastrophic and the database files and log are both accessible on
a filesystem that has recovered cleanly, run the db_recover
utility without the -c option or call the DBENV->open function
specifying the DB_RECOVER flag. The normal recovery process will
review the logs and database files to ensure that all changes associated
with committed transactions appear in the databases and that all
uncommitted transactions do not.
Copyright Sleepycat Software