Because Holland is very pluggable, it may first seem a bit confusing when it comes to configuring Holland to do something useful. Out of the box, Holland is designed to backup MySQL databases using the mysqldump provider. This is the simplest setup, and may be sufficient for most people. However, others may wish to have more fine-grained control over their backups and/or use another method other than mysqldump.
For instance, one can configure a backup set to backup certain databases using Maatkit, others using the mysqlhotcopy (not to be confused with the utility that comes with MySQL of the same name), etc. All this is done by a mix of providers and backup-sets.
Each backup-set implements exactly one provider and will inherit the default values of that provider. These values can be overridden to adjust the behavior of the backup set. This includes defining what databases or tables to include (or exclude) in the backup, the type of compression used (if any), what locking method to use, among other things.
Providers essentially provide a backup service for use in a backup set. As of Holland 0.5, there are 5 providers:
mysqldump
Uses the mysqldump utility to backup databases.
MySQL Hot-Copy
Backs up the actual files that comprise one’s MyISAM tables. While this does require locking the tables involved in the backup, this can often result in a much faster backup over using mysqldump. It does NOT handle transactional tables (such as InnoDB). Note that this provider has not been extensively tested and is more of a proof of concept.
Maatkit
Uses the mk-parallel-dump utility which, under certain circumstances, is faster than a standard mysqldump. Note that this provider is really more of a proof of concept. It should normally not be used for production cases.
Example
This is used solely as a template for designing providers. It otherwise does nothing.
MySQL + LVM
Backup MySQL databases using LVM snapshots which allows for near lockless or fully lockless (when transactional engines are used) backups.
There are also plans to eventually implement the following providers:
MySQL Cluster
MySQL Cluster already offers a simple way of producing lockless backups, however these methods do not often include table-creation data, routines, etc. In addition, backups from the Cluster are stored on each of the Data Nodes.
Therefore, this provider would facilitate backing up and aggregating the Cluster backups into one centralized location, as well as backing up the periphery data necessary should a full restore be necessary.
As Holland is a framework, it can actually backup most anything as long as there is a provider for it. This includes things that have nothing to do with databases. The idea is to present an easy to use and clear method of backing up and restoring backups no matter the source.