Package org.opends.server.backup
Class BackupManager
- java.lang.Object
-
- org.opends.server.backup.BackupManager
-
public class BackupManager extends Object
This is the primary class for managing backups, it works on top of an arbitrary backup storage and allows to backup and restore backupable entities as well as listing and verifying backups. A backup manager does not cache the backup storage content. Multiple backup managers from any DS instance in the topology, working on top of the same backup storage may concurrently call any of the backup manager methods.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BackupManager.BackupFilter
static interface
BackupManager.CountedIterator<M>
static class
BackupManager.FixedBackendIterator<M>
-
Constructor Summary
Constructors Constructor Description BackupManager(BackupFileManager backupFileManager, String serverId)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Backup
createBackup(Backupable backupable, Cancellable cancellable)
Backs up a backend to the underlying backup storage.Collection<Backup>
listBackups(BackupManager.BackupFilter backupFilter, Collection<LocalizableMessage> errors)
Lists all the backups without verifying their integrity.static BackupManager
newBackupManager(BackupStorage backupStorage, ServerContext serverContext)
Creates a new backup manager backed by the provided backup storage.void
purgeBackups(Set<BackupId> backupsToDelete, Cancellable cancellable)
Purge a set of backups.void
restoreBackup(Backup backup, Backupable backupable, Cancellable cancellable)
Restores a backend from the underlying backup storage.void
verifyBackups(Collection<Backup> backups, Cancellable cancellable)
Verifies the integrity of the provided backups and mark them asBackup.verified()
orBackup.hasErrors()
.
-
-
-
Constructor Detail
-
BackupManager
public BackupManager(BackupFileManager backupFileManager, String serverId)
Constructor.- Parameters:
backupFileManager
- the backup file managerserverId
- the server id
-
-
Method Detail
-
newBackupManager
public static BackupManager newBackupManager(BackupStorage backupStorage, ServerContext serverContext) throws com.forgerock.opendj.cli.ClientException
Creates a new backup manager backed by the provided backup storage.- Parameters:
backupStorage
- The backup storage where to read and write backups.serverContext
- The server context.- Returns:
- A backup manager backed by the provided backup storage.
- Throws:
com.forgerock.opendj.cli.ClientException
- If there is an error when trying to obtain the server ID.
-
createBackup
public Backup createBackup(Backupable backupable, Cancellable cancellable) throws BackupException, LdapException
Backs up a backend to the underlying backup storage.- Parameters:
backupable
- The backend to be backed up.cancellable
- A way to interrupt the backup operation.- Returns:
- The backup that was just created.
- Throws:
BackupException
- If there is a problem when storing files to the underlying backup storage.LdapException
- If there is a problem when reading backend data.
-
restoreBackup
public void restoreBackup(Backup backup, Backupable backupable, Cancellable cancellable) throws BackupException, InitializationException
Restores a backend from the underlying backup storage. If the backend directory does not exist, it will be created in order to easily initialize a backend from a backup. Before restoring, this method verifies that the underlying backup storage contains all the backup files needed for a complete restore. After this verification, all the current backend files are removed. Backup file integrity is only verified each time a file is completely transferred, if one backup file corruption is detected or if there is an IO error, restore will stop and all the backend files will be removed, leaving the backend empty.- Parameters:
backup
- The backup to be restored.backupable
- The backend to be restored.cancellable
- A way to interrupt the restore operation.- Throws:
BackupException
- If backup files are missing, corrupted or their integrity cannot be verified.InitializationException
- If there was a problem when trying to replace the current backend files with the backup files.
-
verifyBackups
public void verifyBackups(Collection<Backup> backups, Cancellable cancellable)
Verifies the integrity of the provided backups and mark them asBackup.verified()
orBackup.hasErrors()
. The errors can be retrieved withBackup.getErrors()
. The integrity of each backend file will be verified only once even if files are shared across the provided backups.- Parameters:
backups
- The backups to be verified.cancellable
- A way to interrupt the verification.
-
listBackups
public Collection<Backup> listBackups(BackupManager.BackupFilter backupFilter, Collection<LocalizableMessage> errors) throws BackupException
Lists all the backups without verifying their integrity. The returned collection has no specific order. This method does best effort to list all the backups, if there is an error when trying to read a backup, the error message is added to the provided error collection and the method does not throw an exception.- Parameters:
backupFilter
- Filters the backups that wil be returned.errors
- A collection where each error message encountered when trying to read a backup will be added.- Returns:
- A collection containing all the backups.
- Throws:
BackupException
- If it is not possible to read the backup storage content.
-
purgeBackups
public void purgeBackups(Set<BackupId> backupsToDelete, Cancellable cancellable) throws BackupException
Purge a set of backups. The purge operation aims to delete all the files related to the given backup. If a purge operation has been interrupted, calling this method again will purge any remaining dangling data files.- Parameters:
backupsToDelete
- The backupIds of the backups to purge.cancellable
- A way to interrupt the restore operation.- Throws:
BackupException
- whenever an error occurred while purging the backup.
-
-