Дамп базы MySQL

Часто требуется периодически сохранять дамп базы данных в определенную папку на сервере.
Я предлагаю свой вариант решения задачи.

Для начала нам нужны исходные данные: хост базы данных, название, логин и пароль пользователя базы данных, логин пользователя линукс и адрес папки складирования файлов.

Для начала зайдем под пользователем линукс (я показываю вариант из-под root)

su linuxuser

Теперь создадим локальный файл конфигурации MySQL с реквизитами доступа к базе данных:

nano .my.cnf

Вставим туда следующие данные:

[mysqldump]
host = 127.0.0.1
user=backup
password="123AAABBB"

где host — это адрес базы данных, user — это пользователь базы данных, password — это пароль пользователя базы данных.

Сохраняем локальный файл конфигурации MySQL.

Создаем файл bash-скрипта:

nano backup-sql.sh

вставляем туда следущий код:

#!/bin/bash 
DBNAME=backup_db
DATE=$(date +"%Y-%m-%d_%H-%M")
mysqldump ${DBNAME} | gzip > /home/backup-sql/${DBNAME}_$DATE.sql.gz

где backup_db — это название базы MySQL, /home/backup-sql/ — папка для хранения дампов

Сохраняем файл.

Разрешам выполнение файла

chmod +x backup-sql.sh

и запускаем скрипт:

bash backup-sql.sh

Дожидаемся окончания работы скрипта и смотрим папку, где дожнен появиться дамп базы MySQL

ls /home/backup-sql

в моем случае файл выглядел так: backup_db_2025-06-16_20-16.sql.gz, где сначала идет название базы, затем дата и время создания дампа. Для периодического запуска скрипта, его можно записать в crontab.

crontab -e

Мне, например, достаточно получаеть дамп базы данных 1 раз в неделю, поэтому я вставляю такю запись в crontab:

@weekly /home/linuxuser/backup-sql.sh

где /home/linuxuser/backup-sql.sh — это путь до скрипта