Usage and Implementation Overview¶
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 mysqldump, others using the mysql-lvm plugins etc. All this is done by a mix of plugins (sometimes called providers) and backup-sets.
Backup-Sets¶
Each backup-set implements a backup plugin (provider) and often some helper plugins for things such as compression. Plugins come with a set of defaults such that only values that need to be overridden need to be specified, although it is perfectly acceptable to specify options that are already default - one would merely be stating the obvious. Doing so would also make sure future changes to the defaults in Holland do not impact existing backup-sets.
Provider Plugins¶
Provider plugins provide a backup service for use in a backup set. They are the interface between Holland and the method of backing up data. As of Holland 1.0.8, there are 5 providers included with Holland:
mysqldump
Uses the
mysqldump
utility to backup MySQL databases.MySQL + LVM
Backup MySQL databases using LVM snapshots which allows for near lockless or fully lockless (when transactional engines are used) backups. MySQL must be running on an LVM volume with sufficient free extents to store a working snapshot. It is also extremely ill-advised to store the backup on the same volume as MySQL.
Support for Percona XtraBackup
New in version 1.0.8.
Backup MySQL databases using Percona XtraBackup. This provides a near lockless backup when using the InnoDB storage engine while also providing a mysqlhotcopy style backup for MyISAM tables.
pgdump
Backup PostgreSQL databases using the
pgdump
utility.Example
This is used solely as a template for designing providers. It otherwise does nothing.
As Holland is a framework, it can actually backup most anything as long as there is a provider plugin 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.