Database recovery

Updated: April 19, 2023
The -R option controls the recovery actions QDB performs when it encounters a missing or corrupt database file. The options are:
auto
File manipulation is fully automatic and a best effort is always made to establish a valid database connection at startup. Files are backed up individually and restored individually.
A corrupt or missing database file is restored from the most recent valid backup that can be located. If there's no such backup, a blank database is recreated from the original schema definition.
manual
The only action performed is to create a blank database from the original schema definition if the database file is missing at startup. Databases are not restored from backups. If the file is corrupt, the server will not start. If the file is missing or corrupt at runtime, no access to that database is permitted and it will not be restored or recreated. This mode is intended to allow the creation of a new system or to give manual control over error recovery (e.g., to preserve the corrupt database for later analysis).
set
Backups of attached databases are treated as a coherent set, so an error with any of the component databases causes QDB to restore a complete and matching set of all database files. This is useful if attached databases refer to each other.
The set master is the database that attaches other databases (by using the AutoAttach option in the configuration object). The backup set contains the set master and all attached databases that have BackupAttached enabled. Note that the set master can be backed up incrementally and still belong to the set.
Note:
We recommend the following actions to back up and restore your databases as a coherent set:
  • For the set master database, in the database configuration object:
    • In the AutoAttach option, list all the databases you want to attach. For example:
      AutoAttach::mp3_tunes_1,mp3_tunes2
    • In the BackupAttached option, list all dependant databases. For example:
      BackupAttached::mp3_tunes_1,mp3_tunes_2
  • Use the -R set option when starting qdb.
  • When doing backups, call qdb_backup() on the set master with the scope argument set to QDB_ATTACH_DEFAULT.