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: 3If 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 user@127.0.0.1 (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@5sWhen 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
- demoTo 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.tmpmysql 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