1HOLLAND(1) Holland HOLLAND(1)
2
3
4
6 holland - Holland Documentation
7
9 Introduction to Holland
10 Holland is an Open Source backup framework originally developed by
11 Rackspace and written in Python. It's goal is to help facilitate back‐
12 ing up databases with greater configurability, consistency, and ease.
13 Holland currently focuses on MySQL, however future development will
14 include other database platforms and even non-database related applica‐
15 tions. Because of it's plugin structure, Holland can be used to backup
16 anything you want by whatever means you want.
17
18 Dependencies
19 The core Holland framework has the following dependencies (available on
20 any remotely modern Linux distribution):
21
22 · Python >= 2.6
23
24 · pkg_resources
25
26 · python-setuptools
27
28 · future
29
30 · six
31
32 · ConfigParser
33
34 · ArgParser
35
36 MySQL based plugins additional require the MySQLdb python connector:
37
38 · Python 2: MySQLdb(mysql-python)
39
40 · Python 3: MySQLdb(mysqlclient-python)
41
42 Note that other plugins may have additional dependency requirements.
43
44 Holland Command-Line Reference
45 Here are the commands available from the 'holland' command-line tool:
46
47 help (h)
48 Usage: holland <command> --help(-h)
49
50 Provides basic information about the provided command. If no command is
51 provided, it displays global help instead.
52
53 backup (bk)
54 Usage: holland backup [backup-set1, backup-set2, ..., backup-setN]
55
56 Runs the backup operation. If no backup-sets are specified, all active
57 backup-sets (those defined in the 'backupsets' variable in hol‐
58 land.conf) are backed up.
59
60 One or more backup-sets can be specified directly, in which case only
61 those backup-sets are backed up.
62
63 Additional Command Line Arguments:
64
65 --dry-run (-n): Can be used here to simulate, but not actually run, a
66 backup. This should be used when troubleshooting a particular error
67 before trying to run a real backup.
68
69 --no-lock (-f): Normally, only one instance of Holland can run at any
70 given time using lock-files. Using this flag causes the lock-files to
71 be ignored. This has some very clear use-cases but otherwise be mindful
72 of using this setting as it can cause backups to fail in some cases.
73
74 --abort-immediately: abort on the first backup-set that fails (assuming
75 multiple backupsets were specified)
76
77 Examples:
78
79 # holland bk --dry-run weekly: Attempts a dry-run of the weekly
80 backup-set.
81
82 # holland bk --no-lock --abort-immediately: Attempts a backup of all
83 the default backup-sets ignoring locks and aborting immediately if one
84 of the backup-sets fails.
85
86 list-backups (lb)
87 Usage: holland list-backups
88
89 Provides extended information about available backups.
90
91 list-plugins (lp)
92 Usage: holland list-plugins
93
94 Lists all the available (installed) plugins available to Holland.
95
96 mk-config (mc)
97 Usage: holland mk-config <provider>
98
99 Generates a template backup-set for a particular provider (such as
100 mysqldump). By default, the output is sent to standard out but can be
101 copied to a file, either by using the --file, --edit, or -name options
102 (see below).
103
104 Additional Command Line Arguments:
105
106 --edit: Load the file into the system text-editor for further modifica‐
107 tions.
108
109 --file=FILE (-f): Write the output directly to provided file.
110
111 --name=NAME: Creates a backup-set usable in Holland, which basically
112 means that a file is created of the provided name under the backup-set
113 directory.
114
115 --provider: Indicates that the default provider configuration should be
116 outputted instead. This is really only used when creating a provider
117 config specifically - it should not be used for backup-sets.
118
119 Examples:
120
121 # holland mk-config mysql-lvm > mysql-lvm.conf: Output the default con‐
122 figuration for MySQL-LVM backups and write the contents out to
123 mysql-lvm.conf in the current working directory.
124
125 # holland mc mysqldump --name=Bob --edit: Create a backup-set using the
126 mysqldump provider named Bob and allow interactive editing of the
127 backup-set before saving the file.
128
129 purge (pg)
130 Usage: holland purge <backup-set>/<backup-id>
131
132 Purges old backups by specifying the backup-set name and set-id.
133
134 For example: # holland purge mybackups/20090502_155438: Purge one of
135 the backups taken on May 2nd, 2009 from the mybackups backup-set.
136
137 Usage and Implementation Overview
138 Because Holland is very pluggable, it may first seem a bit confusing
139 when it comes to configuring Holland to do something useful. Out of the
140 box, Holland is designed to backup MySQL databases using the mysqldump
141 provider. This is the simplest setup, and may be sufficient for most
142 people. However, others may wish to have more fine-grained control over
143 their backups and/or use another method other than mysqldump.
144
145 For instance, one can configure a backup set to backup certain data‐
146 bases using mysqldump, others using the mysql-lvm plugins etc. All this
147 is done by a mix of providers and backup-sets.
148
149 Backup-Sets
150 Each backup-set implements exactly one provider and will inherit the
151 default values of that provider. These values can be overridden to
152 adjust the behavior of the backup set. This includes defining what
153 databases or tables to include (or exclude) in the backup, the type of
154 compression used (if any), what locking method to use, among other
155 things.
156
157 Providers
158 Providers essentially provide a backup service for use in a backup set.
159
160 · mysqldump
161 Uses the mysqldump utility to backup databases.
162
163 · MySQL + LVM
164 Backup MySQL databases using LVM snapshots which allows for near
165 lockless or fully lockless (when transactional engines are used)
166 backups.
167
168 · mysqldump + LVM
169 This plugin creates an LVM snapshot, starts a mysql instance using
170 the snapshot as it's datadir, and then use the mysqldump utility
171 to backup the databases.
172
173 · XtraBackup
174 New in version 1.0.8.
175
176
177 Backup MySQL databases using Percona's XtraBackup tool. This pro‐
178 vides a near lockless backup when using the InnoDB storage engine.
179
180 · pgdump
181 Backup PostgreSQL databases using the pgdump utility.
182
183 · mariabackup
184 New in version 1.1.0.
185
186
187 Backup MySQL databases using MariaDB's mariabackup tool.
188
189 · mongodump
190 New in version 1.1.0.
191
192
193 This plugin performs logical backups of a MongoDB by using the
194 mongodump utility.
195
196 · Example
197 This is used solely as a template for designing providers. It oth‐
198 erwise does nothing.
199
200 As Holland is a framework, it can actually backup most anything as long
201 as there is a provider for it. This includes things that have nothing
202 to do with databases. The idea is to present an easy to use and clear
203 method of backing up and restoring backups no matter the source.
204
205 Holland Config Files
206 By default, Holland's configuration files reside in /etc/holland. The
207 main configuration file is holland.conf, however there are a number of
208 other configuration files for configuring default settings for
209 providers and for configuring backup sets.
210
211 Each configuration file has one ore more sections, defined by square
212 brackets Underneath each section, one or more configuration option can
213 be specified. These options are in a standard "option = value" format.
214 Comments are prefixed by the # sign.
215
216 Note that many settings have default values and, as a result, can
217 either be commented out or omitted entirely.
218
219 holland.conf - main config
220 The main configuration file (usually /etc/holland/holland.conf) defines
221 both global settings as well as the active backup sets. It is divided
222 into two sections [holland] and [logging].
223
224 [holland]
225 plugin-dirs
226 Defines where the plugins can be found. This can be a comma-sep‐
227 arated list but usually does not need to be modified.
228
229 backup_directory
230 Top-level directory where backups are held.
231
232 backupsets
233 A comma-separated list of all the backup sets Holland should
234 backup. Each backup set is defined in /etc/holland/back‐
235 upsets/<name>.conf by default.
236
237 umask Sets the umask of the resulting backup files.
238
239 path Defines a path for holland and its spawned processes
240
241 [logging]
242 filename
243 The log file itself.
244
245 level Sets the verbosity of Holland's logging process. Available
246 options are debug, info, warning, error, and critical
247
248 format Define the format of the log message. This options should be in
249 the format defined by the 'logging' python library.
250
251 New in version 1.1.0.
252
253
254 Provider Configs
255 These files control the global settings / defaults for the providers
256 used by the backup-sets. Many of these global settings can be overrid‐
257 den if defined in a backup-set. Note that each provider's configuration
258 file should begin with [provider-name].
259
260 mysqldump Provider Configuration [mysqldump]
261 Backs up a MySQL database using the mysqldump tool.
262
263 [mysqldump]
264 mysql-binpath = /path/to/mysql/bin
265 Defines the location of the MySQL binary utilities. If not provided,
266 Holland will use whatever is in the path.
267
268 lock-method = flush-lock | lock-tables | single-transaction |
269 auto-detect | none
270 Defines which lock method to use. By default, auto-detect will be
271 used.
272
273 · flush-lock
274 flush-lock will place a global lock on all tables involved in
275 the backup regardless of whether or not they are in the
276 backup-set. If file-per-database is enabled, then flush-lock
277 will lock all tables for every database being backed up. In
278 other words, this option may not make much sense when using
279 file-per-database.
280
281 · lock-tables
282 lock-tables will lock all tables involved in the backup. If
283 file-per-database is enabled, then lock-tables will only lock
284 all the tables associated with that database.
285
286 · single-transaction
287 Forces the use of --single-transaction which enabled
288 semi-transparent backups of transactional tables. Forcing this
289 can cause inconsistencies with non-transactional tables, how‐
290 ever. While non-transactional tables will still lock, they
291 will only lock when they are actually being backed up. Use
292 this setting with extreme caution when backing non-transac‐
293 tional tables.
294
295 · auto-detect
296 Let Holland decide which option to use by checking to see if a
297 database or backup-set only contains transactional tables. If
298 so, --single-transaction will be used. Otherwise,
299 --lock-tables will be used.
300
301 · none
302 Does absolutely no explicit locking when backing up the data‐
303 bases or backup-set. This should only be used when backing up
304 a slave and only after the slave has been turned off (ie, this
305 can be used with the stop-slave option).
306
307 exclude-invalid-views = yes | no (default: no)
308 Whether to automate exclusion of invalid views that would otherwise
309 cause mysqldump to fail. This adds additional overhead so this
310 option is not enabled by default.
311
312 When enabled, thos option will scan the INFORMATION_SCHEMA.VIEWS ta‐
313 ble and execute SHOW FIELDS against each view. If a view is detects
314 as invalid, an ignore-table option will be added to exclude the ta‐
315 ble. Additionally, the plugin will attempt to save the view defin‐
316 ion to 'invalid_views.sql' in the backupset's backup directory.
317
318 New in version 1.0.8.
319
320
321 dump-routines = yes | no (default: yes)
322 Whether or not to backup routines in the backup set directly. Rou‐
323 tines are stored in the 'mysql' database, but it can sometimes be
324 convenient to include them in a backup-set directly.
325
326 Changed in version 1.0.8: This option now enabled by default.
327
328
329 dump-events = yes | no
330 Whether or not to dump events explicitly. Like routines, events are
331 stored in the 'mysql' database. Nonetheless, it can sometimes be
332 convenient to include them in the backup-set directly.
333
334 Note: This feature requires MySQL 5.1 or later. The mysqldump plugin
335 will automatically disable events if the version of mysqldump is too
336 old.
337
338 Changed in version 1.0.8: This option is now enabled by default
339
340
341 stop-slave = yes | no
342 Stops the SQL_THREAD during the backup. This means that writes from
343 the master will continue to spool but will not be replayed. This
344 helps avoid lock wait timeouts among things while still allowing
345 data to be spooled from the master.
346
347 Note that previous versions of Holland prior to 1.0.6 simply ran a
348 STOP SLAVE instead, which suspends both replication threads.
349
350 bin-log-position = yes | no
351 Record the binary log name and position at the time of the backup.
352 The information provied by this option is collected just before
353 locking the database.
354
355 Note that if both 'stop-slave' and 'bin-log-position' are enabled,
356 Holland will grab the master binary log name and position at the
357 time of the backup which can be useful in using the backup to create
358 slaves or for point in time recovery using the master's binary log.
359 This information is found within the 'backup.conf' file located in
360 the backup-set destination directory (/var/spool/hol‐
361 land/<backup-set>/<backup> by default). For example:
362
363 [mysql:replication]
364 slave_master_log_pos = 4512
365 slave_master_log_file = 260792-mmm-agent1-bin-log.000001
366
367 flush-logs = yes | no
368 Whether or not to run FLUSH LOGS in MySQL with the backup. When
369 FLUSH LOGS is actually executed depends on which if database filter‐
370 ing is being used and whether or not file-per-database is enabled.
371 Generally speaking, it does not make sense to use flush-logs with
372 file-per-database since the binary logs will not be consistent with
373 the backup.
374
375 file-per-database = yes | no
376 Whether or not to split up each database into its own file. Note
377 that it can be more consistent an efficient to backup all databases
378 into one file, however this means that restore a single database can
379 be difficult if multiple databases are defined in the backup set.
380
381 arg-per-database = JSON object
382 If file-per-database is enable this argument is ued to specify
383 mysqldump arguments per database. It takes a JSON object with the
384 database names as keys. Example: {"employee1": "--no-data"} Adds
385 the '--no-data' argument to the mysqldump command when backing up
386 the 'employee1' database
387
388 New in version 1.0.9.
389
390
391 additional-options = <mysqldump argument>[, <mysqldump argument>]
392 Can optionally specify additional options directly to mysqldump if
393 there is no native Holland option available. This option accepts a
394 comma delimited list of arguments to pass on the commandline.
395
396 extra-defaults = yes | no (default: no)
397 This option controls whether mysqldump will only read options as set
398 by holland or if additional options from global config files are
399 read. By default, the plugin only uses optons as set in the back‐
400 upset config and includes authentication credentials only from the
401 [client] section in ~/.my.cnf.
402
403 estimate-method = plugin | const:<size> (default: plugin)
404 This option will skip some of the heavyweight queries necessary to
405 calculate the size of tables to be backed up. If a constant size is
406 specified, then only table names are evaluated and only if table
407 filtering is being used. Additionally, engines will be looked up via
408 SHOW CREATE TABLE if lock-method = auto-detect, in order for the
409 plugin to determine if tables are using a transactional storage
410 engine. With 'plugin', the default behavior of reading both size
411 information and table names from the information schema is used,
412 which may be slow particularly for a large number of tables.
413
414 Database and Table filtering
415 Database and Table filtering
416 databases = <glob>
417
418 exclude-databases = <glob>
419
420 tables = <glob>
421
422 exclude-tables = <glob>
423
424 The above options accepts GLOBs in comma-separated lists. Multiple fil‐
425 tering options can be specified. When filtering on tables, be sure to
426 include both the database and table name.
427
428 Be careful with quotes. Normally these are not needed, but when quotes
429 are necessary, be sure to only quote each filtering statement, as
430 opposed to putting quotes around all statements.
431
432 Below are a few examples of how these can be applied:
433
434 Default (backup everything):
435
436 databases = *
437 tables = *
438
439 Using database inclusion and exclusions:
440
441 databases = drupal*, smf_forum,
442 exclude-databases = drupal5
443
444 Including Tables:
445
446 tables = phpBB.sucks, drupal6.node*, smf_forum.*
447
448 Excluding Tables:
449
450 exclude-tables = mydb.uselesstable1, x_cart.*, *.sessions
451
452 [compression]
453 Specify various compression settings, such as compression utility, com‐
454 pression level, etc.
455
456 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
457 gpg | zstd
458 Define which compression method to use. Note that some methods may
459 not be available by default on every system and may need to be com‐
460 piled or installed.
461
462 For gpg compression, a key should already exist(gpg --gen-key) and
463 default-recipient must be configured in ~/.gnupg/gpg.conf.
464
465 inline = yes | no
466 Whether or not to pipe the output of the backup command into the
467 compression utility. Enabling this is recommended since it usually
468 only marginally impacts performance, particularly when using a lower
469 compression level.
470
471 level = 0-9
472 Specify the compression ratio. The lower the number, the lower the
473 compression ratio, but the faster the backup will take. Generally,
474 setting the lever to 1 or 2 results in favorable compression of tex‐
475 tual data and is noticeably faster than the higher levels. Setting
476 the level to 0 effectively disables compression.
477
478 bin-path = <full path to utility>
479 This only needs to be defined if the compression utility is not in
480 the usual places or not in the system path.
481
482 split = yes | no
483 Defautls to no. If set the backup will be piped through the split
484 command. This may be useful for user's with large databases, as
485 some backup systems perform better with many smaller files instead
486 of 1 large one. This defaults to 1GB file size, so this option isn't
487 helpful if your dumps are smaller than that.
488
489 New in version 1.1.13.
490
491
492 MySQL connection info [mysql:client]
493 These are optional and, if left undefined, Holland will try to login
494 using the standard .my.cnf conventions.
495
496 user = <user>
497
498 The user to connect to MySQL as.
499
500 password = <password>
501
502 The password for the MySQL user
503
504 socket = <socket>
505
506 The socket file to connect to MySQL with.
507
508 host = <host>
509
510 This would be used for connecting to MySQL remotely.
511
512 port = <port>
513
514 Used if MySQL is running on a port other than 3306.
515
516 MySQL LVM Provider Configuration [mysql-lvm]
517 Creates an LVM snapshot of a running MySQL instance and performs a
518 binary-based backup with minimal locking. MySQL must be running on an
519 LVM volume with reserved space for snapshots. It is highly recommended
520 that this volume be separate from the one storing the resulting back‐
521 ups.
522
523 [mysql-lvm]
524 snapshot-size = <size-in-MB>
525 The size of the snapshot itself. By default it is 20% of the size of
526 the MySQL LVM mount or the remaining free-space in the Volume Group
527 (if there is less than 20% available) up to 15GB. If snapshot-size
528 is defined, the number represents the size of the snapshot in
529 megabytes.
530
531 snapshot-name = <name>
532 The name of the snapshot, the default being the name of the MySQL
533 LVM volume + "_snapshot" (ie Storage-MySQL_snapshot)
534
535 snapshot-mountpoint = <path>
536 Where to mount the snapshot. By default a randomly generated direc‐
537 tory under /tmp is used.
538
539 innodb-recovery = yes | no (default: no)
540 Whether or not to run an InnoDB recovery operation. This avoids
541 needing to do so during a restore, though will make the backup
542 process itself take longer.
543
544 force-innodb-backup = yes | no (default: no)
545 Whether to attempt a backup even if the mysql-lvm plugin thinks it
546 cannot obtain a good backup. This can occur when innodb data files
547 are outside of the mysql datadir or exist on entirely separate logi‐
548 cal volumes.
549
550 lock-tables = yes | no (default: yes)
551 Whether or not to run a FLUSH TABLES WITH READ LOCK to grab various
552 bits of information (such as the binary log name and position). Dis‐
553 abling this requires that binary logging is disabled and InnoDB is
554 being used exclusively. Otherwise, it is possible that the backup
555 could contain crashed tables.
556
557 extra-flush-tables = yes | no (default: yes)
558 Whether or not to run a FLUSH TABLES before running the full FLUSH
559 TABLES WITH READ LOCK. Should make the FLUSH TABLES WITH READ LOCK
560 operation a bit faster.
561
562 archive-method = tar | dir (default: tar)
563 Create a tar file of the datadir, or just copy it.
564
565 [tar]
566 exclude = pattern[, pattern...]
567
568 Patterns to exclude from archive. These should be relative paths and
569 are almost always relative to the mysql data directory. For instance
570 to exclude binary logs in the data directory from the backup you might
571 specify: exclude = ./bin-log.*, mysql.sock
572
573 pre-args = <string>
574
575 Additional arguments to append to the tar commandline before the backup
576 path is specified. This should be the full string as you might specify
577 on the commandline. Shell globbing is not supported.
578
579 For instance you might add the /etc/my.cnf to the tar archive via:
580 pre-args = -C /etc ./my.cnf
581
582 post-args = <string>
583
584 Additional arguments to append to the tar commandline after the backup
585 path is specified. This should be a string exactly as you might spec‐
586 ify on the commandline. Shell globbing is not evaluated.
587
588 [compression]
589 Specify various compression settings, such as compression utility, com‐
590 pression level, etc.
591
592 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
593 gpg | zstd
594 Define which compression method to use. Note that some methods may
595 not be available by default on every system and may need to be com‐
596 piled or installed.
597
598 For gpg compression, a key should already exist(gpg --gen-key) and
599 default-recipient must be configured in ~/.gnupg/gpg.conf.
600
601 inline = yes | no
602 Whether or not to pipe the output of the backup command into the
603 compression utility. Enabling this is recommended since it usually
604 only marginally impacts performance, particularly when using a lower
605 compression level.
606
607 level = 0-9
608 Specify the compression ratio. The lower the number, the lower the
609 compression ratio, but the faster the backup will take. Generally,
610 setting the lever to 1 or 2 results in favorable compression of tex‐
611 tual data and is noticeably faster than the higher levels. Setting
612 the level to 0 effectively disables compression.
613
614 bin-path = <full path to utility>
615 This only needs to be defined if the compression utility is not in
616 the usual places or not in the system path.
617
618 split = yes | no
619 Defautls to no. If set the backup will be piped through the split
620 command. This may be useful for user's with large databases, as
621 some backup systems perform better with many smaller files instead
622 of 1 large one. This defaults to 1GB file size, so this option isn't
623 helpful if your dumps are smaller than that.
624
625 New in version 1.1.13.
626
627
628 MySQL connection info [mysql:client]
629 These are optional and, if left undefined, Holland will try to login
630 using the standard .my.cnf conventions.
631
632 user = <user>
633
634 The user to connect to MySQL as.
635
636 password = <password>
637
638 The password for the MySQL user
639
640 socket = <socket>
641
642 The socket file to connect to MySQL with.
643
644 host = <host>
645
646 This would be used for connecting to MySQL remotely.
647
648 port = <port>
649
650 Used if MySQL is running on a port other than 3306.
651
652 mysqldump LVM Provider Configuration [mysqldump-lvm]
653 Backs up one or more MySQL databases by creating an LVM snapshot and
654 then starting a instance of MySQL on top of it to then perform a mysql‐
655 dump. This effectively produces a non-blocking logical backup.
656
657 [mysql-lvm]
658 snapshot-size = <size-in-MB>
659 The size of the snapshot itself. By default it is 20% of the size of
660 the MySQL LVM mount or the remaining free-space in the Volume Group
661 (if there is less than 20% available) up to 15GB. If snapshot-size
662 is defined, the number represents the size of the snapshot in
663 megabytes.
664
665 snapshot-name = <name>
666 The name of the snapshot, the default being the name of the MySQL
667 LVM volume + "_snapshot" (ie Storage-MySQL_snapshot)
668
669 snapshot-mountpoint = <path>
670 Where to mount the snapshot. By default a randomly generated direc‐
671 tory under /tmp is used.
672
673 innodb-recovery = yes | no (default: no)
674 Whether or not to run an InnoDB recovery operation. This avoids
675 needing to do so during a restore, though will make the backup
676 process itself take longer.
677
678 lock-tables = yes | no (default: yes)
679 Whether or not to run a FLUSH TABLES WITH READ LOCK to grab various
680 bits of information (such as the binary log name and position). Dis‐
681 abling this requires that binary logging is disabled and InnoDB is
682 being used exclusively. Otherwise, it is possible that the backup
683 could contain crashed tables.
684
685 extra-flush-tables = yes | no (default: yes)
686 Whether or not to run a FLUSH TABLES before running the full FLUSH
687 TABLES WITH READ LOCK. Should make the FLUSH TABLES WITH READ LOCK
688 operation a bit faster.
689
690 [mysqld]
691 mysqld-exe = <path>[, <path>...] (default: mysqld in PATH,
692 /usr/libexec/mysqld)
693 This provides a list of locations where the mysqld process to use
694 might be found. This is searched in order of entries in this list.
695
696 user = <name>
697 The --user parameter to use with mysqld.
698
699 innodb-buffer-pool-size = <size> (default: 128M)
700 How large to size the innodb-buffer-pool-size.
701
702 tmpdir = <path> (default: system tempdir)
703 Path to the --tmpdir that mysqld should use.
704
705 log-error = <path> (default: tempdir/holland_lvm.log)
706 Define path for mysqld's error log. The default location get cleaned
707 up by Holland after the backup is complete. This settings allows the
708 user to define the log file in another location and can be useful
709 for debugging issue with the MySQL instance running on the snapshot.
710
711 New in version 1.0.9.
712
713
714 [mysqldump]
715 mysqldump-lvm supports almost all of the options from the mysqldump
716 plugin. --master-data is not supported, as the mysqld process will not
717 read binary logs, so this plugin will automatically disable
718 bin-log-position, if set.
719
720 Binary log information from SOHW MASTER STATUS and SHOW SLAVE STATUS is
721 recorded in the ${backup_directory}/backup.conf file under the
722 [mysql:replication] section.
723
724 [compression]
725 Specify various compression settings, such as compression utility, com‐
726 pression level, etc.
727
728 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
729 gpg | zstd
730 Define which compression method to use. Note that some methods may
731 not be available by default on every system and may need to be com‐
732 piled or installed.
733
734 For gpg compression, a key should already exist(gpg --gen-key) and
735 default-recipient must be configured in ~/.gnupg/gpg.conf.
736
737 inline = yes | no
738 Whether or not to pipe the output of the backup command into the
739 compression utility. Enabling this is recommended since it usually
740 only marginally impacts performance, particularly when using a lower
741 compression level.
742
743 level = 0-9
744 Specify the compression ratio. The lower the number, the lower the
745 compression ratio, but the faster the backup will take. Generally,
746 setting the lever to 1 or 2 results in favorable compression of tex‐
747 tual data and is noticeably faster than the higher levels. Setting
748 the level to 0 effectively disables compression.
749
750 bin-path = <full path to utility>
751 This only needs to be defined if the compression utility is not in
752 the usual places or not in the system path.
753
754 split = yes | no
755 Defautls to no. If set the backup will be piped through the split
756 command. This may be useful for user's with large databases, as
757 some backup systems perform better with many smaller files instead
758 of 1 large one. This defaults to 1GB file size, so this option isn't
759 helpful if your dumps are smaller than that.
760
761 New in version 1.1.13.
762
763
764 MySQL connection info [mysql:client]
765 These are optional and, if left undefined, Holland will try to login
766 using the standard .my.cnf conventions.
767
768 user = <user>
769
770 The user to connect to MySQL as.
771
772 password = <password>
773
774 The password for the MySQL user
775
776 socket = <socket>
777
778 The socket file to connect to MySQL with.
779
780 host = <host>
781
782 This would be used for connecting to MySQL remotely.
783
784 port = <port>
785
786 Used if MySQL is running on a port other than 3306.
787
788 Xtrabackup Provider Configuration [xtrabackup]
789 Backs up a MySQL instance using Percona's Xtrabackup tool.
790
791 [xtrabackup]
792 global-defaults = <path> (default: /etc/my.cnf)
793 The MySQL configuration file for xtrabackup to parse. This is
794 !include'd into the my.cnf the xtrabackup plugin generates
795
796 innobackupex = <name> (default: innobackupex-1.5.1)
797 The path to the innobackupex script to run. If this is a relative
798 path this will be found in holland's environment PATH as configured
799 in /etc/holland/holland.conf.
800
801 Changed in version 1.1.12: For xtrabackup version 8.0 or greater, this
802 option is ignored
803
804
805 ibbackup = <name>
806 The path to the ibbackup command to use. By default, no --ibbackup
807 option is pass to the innobackupex script. Usually innobackupex
808 will detect this by itself and this should not need to be set.
809
810 stream = tar|xbstream|yes|no (default: tar)
811 Whether to generate a streaming backup.
812
813 Changed in version 1.0.8: 'tar' and 'xbstream' are now valid options.
814 The old stream = yes is now equivalent to stream = tar and stream = no
815 disables streaming entirely and will result in a normal directory copy
816 with xtrabackup
817
818
819 Changed in version 1.1.12: For xtrabackup version 8.0 or
820 greater,'xstream' will be used unless this value is set to 'no'
821
822
823 apply-logs = yes | no (default: yes)
824 Whether to run innobackupex --apply-logs at the end of the backup.
825 This is only supported when performing a non-streaming, non-com‐
826 pressed backup. In this case, even if apply-logs = yes (the
827 default), the prepare stage will be skipped. Even with an uncom‐
828 pressed, non-streaming backup you may want to disable apply-logs if
829 you wish to use incremental backups.
830
831 New in version 1.0.8.
832
833
834 slave-info = yes | no (default: yes)
835 Whether to enable the --slave-info innobackupex option
836
837 safe-slave-backup = yes | no (default: yes)
838 Whether to enable the --safe-slave-backup innobackupex option.
839
840 no-lock = yes | no (default: no)
841 Whether to enable the --no-lock innobackupex option
842
843 tmpdir = <path> (default: ${backup_directory})
844 The path for the innobackupex --tmpdir option. By default this will
845 use the current holland backup directory to workaround the following
846 bug: https://bugs.launchpad.net/percona-xtrabackup/+bug/1007446
847
848 New in version 1.0.8.
849
850
851 additional-options = <option>[, <option>...]
852 A list of additional options to pass to innobackupex. This is a
853 comma separated list of options.
854
855 pre-command = <command-string>
856 A command to run prior to running this xtrabackup run. This can be
857 used, for instance, to generate a mysqldump schema dump prior to
858 running xtrabackup. instances of ${backup_directory} will be
859 replaced with the current holland backup directory where the xtra‐
860 backup data will be stored.
861
862 [compression]
863 Specify various compression settings, such as compression utility, com‐
864 pression level, etc.
865
866 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
867 gpg | zstd
868 Define which compression method to use. Note that some methods may
869 not be available by default on every system and may need to be com‐
870 piled or installed.
871
872 For gpg compression, a key should already exist(gpg --gen-key) and
873 default-recipient must be configured in ~/.gnupg/gpg.conf.
874
875 inline = yes | no
876 Whether or not to pipe the output of the backup command into the
877 compression utility. Enabling this is recommended since it usually
878 only marginally impacts performance, particularly when using a lower
879 compression level.
880
881 level = 0-9
882 Specify the compression ratio. The lower the number, the lower the
883 compression ratio, but the faster the backup will take. Generally,
884 setting the lever to 1 or 2 results in favorable compression of tex‐
885 tual data and is noticeably faster than the higher levels. Setting
886 the level to 0 effectively disables compression.
887
888 bin-path = <full path to utility>
889 This only needs to be defined if the compression utility is not in
890 the usual places or not in the system path.
891
892 split = yes | no
893 Defautls to no. If set the backup will be piped through the split
894 command. This may be useful for user's with large databases, as
895 some backup systems perform better with many smaller files instead
896 of 1 large one. This defaults to 1GB file size, so this option isn't
897 helpful if your dumps are smaller than that.
898
899 New in version 1.1.13.
900
901
902 MySQL connection info [mysql:client]
903 These are optional and, if left undefined, Holland will try to login
904 using the standard .my.cnf conventions.
905
906 user = <user>
907
908 The user to connect to MySQL as.
909
910 password = <password>
911
912 The password for the MySQL user
913
914 socket = <socket>
915
916 The socket file to connect to MySQL with.
917
918 host = <host>
919
920 This would be used for connecting to MySQL remotely.
921
922 port = <port>
923
924 Used if MySQL is running on a port other than 3306.
925
926 pgdump Provider Configuration [pgdump]
927 Backs up a PostgreSQL instance using the pgdump utility.
928
929 [pgdump]
930 format = custom | tar | plain (default: custom)
931 Defines the --format option for pg_dump. This defaults to --for‐
932 mat=custom. The custom format is required for pg_restore to do par‐
933 tial restore as well as enabling parallel restores. If set to cus‐
934 tom, the --compress option will be passed to pgdump
935
936 additional-options = <command-string>
937 Pass additional options to the pg_dump command
938
939 Only the 'level' option will be used if 'format=custom'
940
941 [compression]
942 Specify various compression settings, such as compression utility, com‐
943 pression level, etc.
944
945 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
946 gpg | zstd
947 Define which compression method to use. Note that some methods may
948 not be available by default on every system and may need to be com‐
949 piled or installed.
950
951 For gpg compression, a key should already exist(gpg --gen-key) and
952 default-recipient must be configured in ~/.gnupg/gpg.conf.
953
954 inline = yes | no
955 Whether or not to pipe the output of the backup command into the
956 compression utility. Enabling this is recommended since it usually
957 only marginally impacts performance, particularly when using a lower
958 compression level.
959
960 level = 0-9
961 Specify the compression ratio. The lower the number, the lower the
962 compression ratio, but the faster the backup will take. Generally,
963 setting the lever to 1 or 2 results in favorable compression of tex‐
964 tual data and is noticeably faster than the higher levels. Setting
965 the level to 0 effectively disables compression.
966
967 bin-path = <full path to utility>
968 This only needs to be defined if the compression utility is not in
969 the usual places or not in the system path.
970
971 split = yes | no
972 Defautls to no. If set the backup will be piped through the split
973 command. This may be useful for user's with large databases, as
974 some backup systems perform better with many smaller files instead
975 of 1 large one. This defaults to 1GB file size, so this option isn't
976 helpful if your dumps are smaller than that.
977
978 New in version 1.1.13.
979
980
981 [pgauth]
982 username = <name>
983 Username for pg_dump to authenticate with
984
985 password = <string>
986 Password for pg_dump to authenticate with
987
988 hostname = <string>
989 Hostname for pg_dump to connect with
990
991 port = <integer>
992 TCP port for pg_dump to connect on
993
994 mongodump Provider Configuration [mongodump]
995 This plugin performs logical backups of a MongoDB by using the mongo‐
996 dump utility.
997
998 [mongodump]
999 host = <string>
1000 Hostname for mongodump to connect with
1001
1002 username = <name>
1003 Username for mongodump to authenticate with
1004
1005 password = <string>
1006 Password for mongodump to authenticate with
1007
1008 port = <integer>
1009 TCP port for mongodump to connect on
1010
1011 [compression]
1012 Specify various compression settings, such as compression utility, com‐
1013 pression level, etc.
1014
1015 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
1016 gpg | zstd
1017 Define which compression method to use. Note that some methods may
1018 not be available by default on every system and may need to be com‐
1019 piled or installed.
1020
1021 For gpg compression, a key should already exist(gpg --gen-key) and
1022 default-recipient must be configured in ~/.gnupg/gpg.conf.
1023
1024 inline = yes | no
1025 Whether or not to pipe the output of the backup command into the
1026 compression utility. Enabling this is recommended since it usually
1027 only marginally impacts performance, particularly when using a lower
1028 compression level.
1029
1030 level = 0-9
1031 Specify the compression ratio. The lower the number, the lower the
1032 compression ratio, but the faster the backup will take. Generally,
1033 setting the lever to 1 or 2 results in favorable compression of tex‐
1034 tual data and is noticeably faster than the higher levels. Setting
1035 the level to 0 effectively disables compression.
1036
1037 bin-path = <full path to utility>
1038 This only needs to be defined if the compression utility is not in
1039 the usual places or not in the system path.
1040
1041 split = yes | no
1042 Defautls to no. If set the backup will be piped through the split
1043 command. This may be useful for user's with large databases, as
1044 some backup systems perform better with many smaller files instead
1045 of 1 large one. This defaults to 1GB file size, so this option isn't
1046 helpful if your dumps are smaller than that.
1047
1048 New in version 1.1.13.
1049
1050
1051 Mariabackup Provider Configuration [mariabackup]
1052 Backs up a MySQL instance using mariabackup tool.
1053
1054 [mariabackup]
1055 global-defaults = <path> (default: /etc/my.cnf)
1056 The MySQL configuration file for mariabackup to parse. This is
1057 !include'd into the my.cnf the mariabackup plugin generates
1058
1059 innobackupex = <name> (default: innobackupex-1.5.1)
1060 The path to the innobackupex script to run. If this is a relative
1061 path this will be found in holland's environment PATH as configured
1062 in /etc/holland/holland.conf.
1063
1064 ibbackup = <name>
1065 The path to the ibbackup command to use. By default, no --ibbackup
1066 option is pass to the innobackupex script. Usually innobackupex
1067 will detect this by itself and this should not need to be set.
1068
1069 stream = mbstream(default: tar)
1070 Placeholder
1071
1072 apply-logs = yes | no (default: yes)
1073 Whether to run innobackupex --apply-logs at the end of the backup.
1074 This is only supported when performing a non-streaming, non-com‐
1075 pressed backup. In this case, even if apply-logs = yes (the
1076 default), the prepare stage will be skipped. Even with an uncom‐
1077 pressed, non-streaming backup you may want to disable apply-logs if
1078 you wish to use incremental backups.
1079
1080 slave-info = yes | no (default: yes)
1081 Whether to enable the --slave-info innobackupex option
1082
1083 safe-slave-backup = yes | no (default: yes)
1084 Whether to enable the --safe-slave-backup innobackupex option.
1085
1086 no-lock = yes | no (default: no)
1087 Whether to enable the --no-lock innobackupex option
1088
1089 tmpdir = <path> (default: ${backup_directory})
1090 The path for the innobackupex --tmpdir option.
1091
1092 additional-options = <option>[, <option>...]
1093 A list of additional options to pass to innobackupex. This is a
1094 comma separated list of options.
1095
1096 pre-command = <command-string>
1097 A command to run prior to running this mariabackup run. This can be
1098 used, for instance, to generate a mysqldump schema dump prior to
1099 running mariabackup. instances of ${backup_directory} will be
1100 replaced with the current holland backup directory where the mari‐
1101 abackup data will be stored.
1102
1103 [compression]
1104 Specify various compression settings, such as compression utility, com‐
1105 pression level, etc.
1106
1107 method = gzip| gzip-rsyncable | pigz | bzip2 | pbzip2 | lzop | lzma |
1108 gpg | zstd
1109 Define which compression method to use. Note that some methods may
1110 not be available by default on every system and may need to be com‐
1111 piled or installed.
1112
1113 For gpg compression, a key should already exist(gpg --gen-key) and
1114 default-recipient must be configured in ~/.gnupg/gpg.conf.
1115
1116 inline = yes | no
1117 Whether or not to pipe the output of the backup command into the
1118 compression utility. Enabling this is recommended since it usually
1119 only marginally impacts performance, particularly when using a lower
1120 compression level.
1121
1122 level = 0-9
1123 Specify the compression ratio. The lower the number, the lower the
1124 compression ratio, but the faster the backup will take. Generally,
1125 setting the lever to 1 or 2 results in favorable compression of tex‐
1126 tual data and is noticeably faster than the higher levels. Setting
1127 the level to 0 effectively disables compression.
1128
1129 bin-path = <full path to utility>
1130 This only needs to be defined if the compression utility is not in
1131 the usual places or not in the system path.
1132
1133 split = yes | no
1134 Defautls to no. If set the backup will be piped through the split
1135 command. This may be useful for user's with large databases, as
1136 some backup systems perform better with many smaller files instead
1137 of 1 large one. This defaults to 1GB file size, so this option isn't
1138 helpful if your dumps are smaller than that.
1139
1140 New in version 1.1.13.
1141
1142
1143 MySQL connection info [mysql:client]
1144 These are optional and, if left undefined, Holland will try to login
1145 using the standard .my.cnf conventions.
1146
1147 user = <user>
1148
1149 The user to connect to MySQL as.
1150
1151 password = <password>
1152
1153 The password for the MySQL user
1154
1155 socket = <socket>
1156
1157 The socket file to connect to MySQL with.
1158
1159 host = <host>
1160
1161 This would be used for connecting to MySQL remotely.
1162
1163 port = <port>
1164
1165 Used if MySQL is running on a port other than 3306.
1166
1167 Backup-Set Configs
1168 Backup-Set configuration files largely inherit the configuration
1169 options of the specified provider. To define a provider for the backup
1170 set, you must put the following at the top of the backup set configura‐
1171 tion file:
1172
1173 [holland:backup]
1174 plugin = <plugin>
1175 backups-to-keep = #
1176 estimated-size-factor = #
1177 historic-size = <yes|no>
1178 historic-size-factor = #
1179 historic-estimated-size-factor = #
1180
1181 Configuration Options
1182 plugin = <plugin>
1183 This is the name of the provider that will be used for the
1184 backup-set. This is required in order for the backup-set to func‐
1185 tion.
1186
1187 backups-to-keep = #
1188 Specifies the number of backups to keep for a backup-set. Defaults
1189 to retaining 1 backup.
1190
1191 estimated-size-factor = #
1192 Specifies the scale factor when Holland decides if there is enough
1193 free space to perform a backup. The default is 1.0 and this number
1194 is multiplied against what each individual plugin reports its esti‐
1195 mated backup size when Holland is verifying sufficient free space
1196 for the backupset.
1197
1198 As of Holland 1.1.1, the 'historic' backup size will be used. If
1199 Holland is unable to determine that size, it will default back to
1200 this.
1201
1202 auto-purge-failures = yes | no
1203 Specifies whether to keep a failed backup or to automatically remove
1204 the backup directory. By default this is on with the intention that
1205 whatever process is calling holland will retry when a backup fails.
1206 This behavior can be disabled by setting auto-purge-failures = no
1207 when partial backups might be useful or when troubleshooting a
1208 backup failure.
1209
1210 purge-policy = manual | before-backup | after-backup
1211 Specifies when to run the purge routine on a backupset. By default
1212 this is run after a new successful backup completes. Up to back‐
1213 ups-to-keep backups will be retained including the most recent.
1214
1215 purge-policy = before-backup will run the purge routine just before
1216 a new backup starts. This will retain up to backups-to-keep backups
1217 before the new backup is even started allowing purging all previous
1218 backups if backups-to-keep is set to 0. This behavior is useful if
1219 some other process is retaining backups off-server and disk space is
1220 at a premium.
1221
1222 purge-policy = manual will never run the purge routine automati‐
1223 cally. Either holland purge must be run externally or an explicit
1224 removal of desired backup directories can be done at some later
1225 time.
1226
1227 before-backup-command = string
1228 Run a shell command before a backup starts. This allows a command
1229 to perform some action before the backup starts such as setting up
1230 an iptables rule (taking a mysql slave out of a load balancer) or
1231 aborting the backup based on some external condition.
1232
1233 The backup will fail if this command exits with a non-zero status.
1234
1235 New in version 1.0.7.
1236
1237
1238 after-backup-command = string
1239 Run a shell command after a backup completes. This allows a command
1240 to perform some action when a backup completes successfully such as
1241 sending out a success notification.
1242
1243 The backup will fail if this command exits with a non-zero status.
1244
1245 New in version 1.0.7.
1246
1247
1248 failed-backup-command = string
1249 Run a shell command if a backup starts. This allows some command to
1250 perform some action when a backup fails such as sending out a fail‐
1251 ure notification.
1252
1253 The backup will fail if this command exits with a non-zero status.
1254
1255 New in version 1.0.7.
1256
1257
1258 historic-size = yes | no
1259 Defaults to yes. Check for the 'backup.conf' file in the 'newest'
1260 spooled folder for the running "backupset". If the configuration
1261 file exists and contains 'estimated-size' and 'on-disk-size', these
1262 values will be used to decide if holland has enough free space for a
1263 backupset. This means Holland will use values from the previous
1264 backup to estimate the size of the next backup.
1265
1266 New in version 1.1.1.
1267
1268
1269 historic-size-factor = #
1270 Defaults to '1.5'. If the estimated size of the database has changed
1271 by more than this multiple, the 'estimated-size-factor' value will
1272 be used to determine if there is sufficient free space for the back‐
1273 upset.
1274
1275 New in version 1.1.1.
1276
1277
1278 historic-estimated-size-factor = #
1279 Defaults to '1.1'. Specifies the scale factor when Holland decides
1280 if there is enough free space to perform a backup. Holland will
1281 throw an error if the system has less free space than the last
1282 backup size multiplied by this value
1283
1284 New in version 1.1.1.
1285
1286
1287 For all hook commands, Holland will perform simple text substitution on
1288 the three parameters:
1289
1290 · hook - name of the hook being called (one of: before-backup-com‐
1291 mand, after-backup-command, failed-backup-command)
1292
1293 · backupdir - path to the current backup directory (e.g.
1294 /var/spool/holland/mysqldump/YYYYmmdd_HHMMSS)
1295
1296 · backupset - name of the backupset being run (e.g. 'mysql-lvm')
1297
1298 For example:
1299
1300 [holland:backup]
1301 plugin = mysqldump
1302 before-backup-command = /usr/local/bin/my-custom-script --hook ${hook} --backupset ${backupset} --backupdir ${backupdir}
1303 after-backup-command = echo ${backupset} completed successfully. Files are in ${backupdir}
1304
1305 [mysqldump]
1306 ...
1307
1308 Backup-Set files are defined in the "backupsets" directory which is, by
1309 default, /etc/holland/backupsets. The name of the backup-set is defined
1310 by its configuration filename and can really be most anything. That
1311 means backup-sets can be organized in any arbitrary way, although
1312 backup set files must end in .conf. The file extension is not part of
1313 the name of the backup-set.
1314
1315 As noted above, in order for a backup-set to be active, it must be
1316 listed in the backupsets variable.
1317
1318 Backups are placed under the directory defined in the backup_directory
1319 section of the main configuration file. Each backup resides under a
1320 directory corresponding to the backup-set name followed by a
1321 date-encoded directory.
1322
1324 Holland Core Team
1325
1327 2018, Holland Core Team
1328
1329
1330
1331
13321.1.13 Mar 12, 2019 HOLLAND(1)