Version 3.12.0

3.3.1. MySQL/MariaDB logical backups

A MySQL/MariaDB logical backup is a regular database dump. Backups are created in SQL format.

Requirements:

  • To make backups of your databases, you have to ensure that you have installed mysqldump utility in an equal or newer version than the target server.
  • There should be enough space in the directory where the temporary backup is created.
  • The database user, who connects to the database must have the following privileges

Here is an example of configs for creating backup of all databases on mysql server with exclude of “mysql”, “information_schema”, “performance_schema”, “sys” databases.

This job config defines rules to make database backups on MySQL server running on localhost:

job_name: mysql
type: mysql
tmp_dir: /var/backups/dump_tmp
safety_backup: false
deferred_copying: false

sources:
  - name: mysql
  	connect:
    	db_host: localhost
    	db_port: "3306"
    	db_user: root
    	db_password: rootP@5s
  	target_dbs:
    	- all
  	excludes:
    	- mysql
    	- information_schema
    	- performance_schema
    	- sys
    	- demo
    	- staging.metrics
  	gzip: true
  	is_slave: true
  	db_extra_keys: "--opt --add-drop-database --routines --comments --create-options --quote-names --order-by-primary --hex-blob --single-transaction"
storages_options:
  - storage_name: local
  	backup_path: /var/backup/dump
  	retention:
    	days: 7
    	weeks: 4
    	months: 3

If you need to configure additional storage or have questions about options, please visit the Job storage options page for more details.

Tips

Access error

If you encounter the error "access denied for [email protected] (or user@::1)" when connecting to localhost, which means that this user is not allowed to connect over the network. Change the connection to socket, or add/change the user to allow network connections or any connections at all.

sources:
  - name: mysql
  	connect:
	    socket: /var/run/mysqld/mysqld.sock
    	db_user: user
    	db_password: userP@5s
Excludes

When configuring a backup job, you can exclude some databases and tables.

To exclude databases, list them in the excludes field:

sources:
  - name: mysql
  	excludes:
    	- mysql
    	- information_schema
    	- performance_schema
    	- sys
    	- demo

To exclude tables, add a list in the excludes field in the format <db_name>.<table_name>:

sources:
  - name: mysql
  	excludes:
    	- staging.metrics
    	- prod.log
    	- prod.tmp

Reference of mysql type

# Job unique name
job_name: string # Required

# Type of the backup job. `mysql`
type: string # Required

# Path to the directory used to temporarily store the backup during the creation process
tmp_dir: string # Required

# The option defines the order of rotation (deletion of old) backups, before creating a new copy or afterwards
safety_backup: bool # Default: false

# The option allows you to postpone copying until all backup parts of the job are complete before its delivery
deferred_copying: bool # Default: false

# The option enables compression of the backup archive
gzip: bool # Default: false

# Contains resource constraints for a specific job that override all others.
limits: map
  # Limit the write speed to the local disc per second in `bytes`, `kb`, `mb`, etc. Example: "20mb".
  # If "0" is used, there is no limitation.
  disk_rate: string
  # Limit the net speed to remote storages per second in `bytes`, `kb`, `mb`, etc. Example: "12mb".
  # If "0" is used, there is no limitation.
  net_rate: string

# Contains a list of individual subtasks for creating backups
sources: list 
    # Unique subtask name, used to separate storage paths
  - name: string # Required
    # Defines a set of parameters for connecting to the database. You may use either auth_file or db_host,db_port or socket options. Options priority follows: auth_file → db_host → socket
    connect: map 
      # Path to MySQL auth file
      mysql_auth_file: string # Optional
      # DB host address
      db_host: string # Optional
      # DB port
      db_port: string # Optional
      # DB user
      db_user: string # Optional
      # DB password
      db_password: string # Optional
      # Path to DB socket
      socket: string # Optional
    # List of databases to be backed up. Use the keyword all for backup all databases.
    target_dbs: list 
      # Database name to be backed up. All databases will be backed up if used `all` as db name
      - string # Default: all
    # List of databases/tables to be excluded from backup  
    excludes: list 
      # Entry to exclude from the backup.
      - string # Optional
    # The option enables compression of the backup archive, overwrites job level
    gzip: bool # Default: false
    # The option stops replication while collecting backups
    is_slave: bool # Default: false
    # Special parameters for collecting database backups. Will be passed as arguments to the `mysqldump` command
    db_extra_keys: string # Optional

# List of storages to which backups should be delivered and their rotation rules
storages_options: list 
    # The name of the storage added to the main config. The name `local` is used to store a copy on host.
  - storage_name: string # Reuired
    # Path to directory where backups will be stored
    backup_path: string # Reuired
    # Enables backup rotation according to retention parameters.
    enable_rotate: bool # Default: true
    # Set of rules to store and rotate the backups.
    retention: map 
      # Use backup retention count instead of retention period.
      count_instead_of_period: bool # Default: false
      # Count of days/daily copies to store backups. Multiple copies can be created in one day.
      days: numeric # Default: 7
      # Count of weeks/weekly copies to store backups created on sunday.
      weeks: numeric # Default: 5
      # Count of months/montly copies to store backups created on the first day of month.
      months: numeric # Default: 12