Restoring All Objects From an Object-Level Backup
To restore everything in an object-level backup to the database from which it was taken, use the vbr restore task with the configuration file you used to create the backup, as in the following example:
$ vbr --task restore --config-file MySchema.ini Copying... 1871652633 out of 1871652633, 100% All child processes terminated successfully. restore done!
The database must be UP.
You can specify how Vertica reacts to duplicate objects by setting the
objectRestoreMode parameter in the configuration file.
Object-level backup and restore are not supported for HDFS storage locations.
Restoring Objects to a Changed Cluster
Unlike restoring from a full database backup,
vbr supports restoring object-level backups after adding nodes to the cluster. Any nodes that were not in the cluster when you created the object-level backup do not participate in the restore. You can rebalance your cluster after the restore to distribute data among the new nodes.
You cannot restore an object-level backup after removing nodes, altering node names, or changing IP addresses. Trying to restore an object-level backup after such changes causes
vbr to fail and display this message:
Preparing... Topology changed after backup; cannot restore. restore failed!
Projection Epoch After Restore
All object-level backup and restore events are treated as DDL events. If a table does not participate in an object-level backup, possibly because a node is down, restoring the backup affects the projection in the following ways:
- Its epoch is reset to 0.
- It must recover any data that it does not have by comparing epochs and other recovery procedures.
Catalog Locks During Restore
As with other databases, Vertica transactions follow strict locking protocols to maintain data integrity.
When restoring an object-level backup into a cluster that is UP,
vbr begins by copying data and managing storage containers. If necessary,
vbr splits the containers. This process does not require any database locks.
After completing data-copying tasks,
vbr first requires a table object lock (O-lock) and then a global catalog lock (GCLX).
In some circumstances, other database operations, such as DML statements, are in progress when the process attempts to get an O-lock on the table. In such cases,
vbr is blocked from progress until the DML statement completes and releases the lock. After securing an O-lock first, and then a GCLX lock,
vbr blocks other operations that require a lock on the same table.
vbr holds its locks, concurrent table modifications are blocked. Database system operations, such as the Tuple Mover (TM) transferring data from memory to disk, are canceled to permit the object-level restore to complete.
Catalog Restore Events
Each object-level backup includes a section of the database catalog, called a snippet. A snippet contains the selected objects, their dependent objects, and principal objects. A catalog snippet is similar in structure to the database catalog but consists of a subset representing the object information. Objects being restored can be read from the catalog snippet and used to update both global and local catalogs.
Each object from a restored backup is updated in the catalog. If the object no longer exists,
vbr drops the object from the catalog. Any dependent objects that are not in the backup are also dropped from the catalog.
vbr uses existing dependency verification methods to check the catalog and adds a restore event to the catalog for each restored table. That event also includes the epoch at which the event occurred. If a node misses the restore table event, it recovers projections anchored on the given table.
Restoring and Replicating Objects to a Newer Version of Vertica
Vertica supports object replication and restoration to a target database up to one minor version later than the current database version. For example, you can replicate or restore objects from a 11.0.x database to an 11.1.x database. The restore or replication process from one version to another is the same as it is to the same version.
This functionality applies only when restoring and replicating objects.
If your restored or replicated objects require a UDx library that is not present in the later version of your database, Vertica displays the following error:
ERROR 2858: Could not find function definition
You can resolve this issue by installing compatible libraries in your target database.
Catalog Size Limitations
Object-level restores can fail if your catalog size is greater than five percent of the total memory available in the node performing the restore. In this situation, Vertica recommends restoring individual objects from the backup. For more information, refer to Restoring Individual Objects.