Jump to content


From Wikitech

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.


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]

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:
  --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
  --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