A MySQL/MariaDB logical backup is a regular database dump. Backups are created in SQL format.
Requirements:
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.
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
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
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
# Path to server root CA cert
ssl_ca: string # Optional
# Path to client cert
ssl_cert: string # Optional
# Path to client key
ssl_key: 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