Backup-mariadb

backup-mariadb (previously backup_mariadb.py) is a Python 3 script that allows generating MariaDB backups of different formats (right now mydumper and xtrabackup (mariabackup) are implemented, but can be easily extended with others.
Note that while backup-mariadb can call xtrabackup, it can only do so for a local mariadb instance, so normally it is used in combination with transfer.py, which uses cumin to transfer backups from a remote host, and later postprocess it with backup-mariadb.
backup-mariadb can be used with options on command line, but it is intended to be used more easily with a configuration file.
== Usage ==
backup_mariadb.py is installed on PATH on dbprov* hosts (via Puppet), and it is used to generate weekly dumps, as well as postprocess remote snapshots (xtrabackup) generated by transfer.py.
 dbprov1001$ backup-mariadb -h
 usage: backup_mariadb.py [-h] [--config-file CONFIG_FILE] [--host HOST]
 [--port PORT] [--user USER] [--password PASSWORD]
 [--threads THREADS] [--type {dump,snapshot}]
 [--only-postprocess] [--rotate]
 [--retention RETENTION] [--backup-dir BACKUP_DIR]
 [--rows ROWS] [--archive] [--compress]
 [--regex REGEX] [--stats-host STATS_HOST]
 [--stats-port STATS_PORT] [--stats-user STATS_USER]
 [--stats-password STATS_PASSWORD]
 [--stats-database STATS_DATABASE]
 [section]
 
 Create a mysql/mariadb logical backup using mydumper or a snapshot using
 mariabackup.It has 2 modes: Interactive, where options are received from the
 command line and non-interactive, where it reads from a config file and
 performs several backups
 
 positional arguments:
 section Section name of the backup. E.g.: "s3", "tendril". If
 section is set, --config-file is ignored. If it is
 empty, only config-file options will be used and other
 command line options will be ignored. For --only-
 postprocess work, you can also provide an absolute
 path of the directory
 
 optional arguments:
 -h, --help show this help message and exit
 --config-file CONFIG_FILE
 Config file to use. By default, /etc/wmfbackups/backups.cnf
 .
 --host HOST Host to generate the backup from. Default: localhost.
 --port PORT Port to connect to. Default: 3306.
 --user USER User to connect for backup. Default: root.
 --password PASSWORD Password used to connect. Default: empty password.
 --threads THREADS Number of threads to use for exporting. Default: 18
 concurrent threads.
 --type {dump,snapshot}
 Backup type: dump or snapshot. Default: dump
 --only-postprocess If present, only postprocess and perform the metadata
 gathering metrics for the given ongoing section
 backup, skipping the actual backup. Default: Do the
 whole process.
 --rotate If present, run the rotation process, by moving it to
 the standard."latest" backup. Default: Do not rotate.
 --retention RETENTION
 If rotate is set, purge backups of this section older
 than the given value, in days. Default: 18 days.
 --backup-dir BACKUP_DIR
 Directory where the backup will be stored. Default:
 /srv/backups.
 --rows ROWS Max number of rows to dump per file. Default: 20000000
 --archive If present, archive each db on its own tar file.
 --compress If present, compress everything into a tar.gz.Default:
 Do not compress.
 --regex REGEX Only backup tables matching this regular
 expression,with format: database.table. Default: all
 tables
 --stats-file STATS_FILE
 Separate file where the statistics options are
 defined. This option and stats-host are exclusive.
 --stats-host STATS_HOST
 Host where the statistics database is. This option and
 stats-file are exclusive
 --stats-port STATS_PORT
 Port where the statistics database is. Default: 3306
 --stats-user STATS_USER
 User for the statistics database.
 --stats-password STATS_PASSWORD
 Password used for the statistics database.
 --stats-database STATS_DATABASE
 MySQL schema that contains the statistics database.
== See also ==
* MariaDB/Backups
Category: MySQL
Category: Backups