Вот надёжный шаблон скрипта для резервного копирования MySQL / MariaDB, полностью аналогичный предыдущему PostgreSQL-скрипту: с логированием, сжатием, безопасной передачей пароля, ротацией старых бэкапов и поддержкой одной или всех баз. Файл: mysql-backup.sh Как передать пароль безопасно? Рекомендуется: файл ~/.my.cnf Создайте /root/.my.cnf: chmod 600 /root/.my.cnf Содержимое: [client] host = localhost port = 3306 user = root password = ваш_пароль Тогда не нужно указывать MYSQL_PASSWORD в скрипте — mysqldump сам прочитает настройки. Это самый безопасный способ: пароль не виден в ps, не хранится в скрипте. Альтернатива: раскомментируйте MYSQL_PASSWORD Скрипт создаст временный .cnf с правами 600 и удалит его после работы (trap гарантирует это). Как использовать: Сохраните как /root/mysql-backup.sh Сделайте исполняемым: chmod +x /root/mysql-backup.sh Отредактируйте: MYSQL_DB → например, grafana, zabbix, wordpress Или оставьте "all", чтобы бэкапить всё Добавьте в cron: 0 1 * * * /root/mysql-backup.sh Логи: /root/backups/mysql/backup.log Важные опции mysqldump: Важные опции mysqldump: Опция --single-transaction Для InnoDB: делает согласованный дамп без блокировки таблиц --routines Сохраняет хранимые процедуры и функции --triggers Сохраняет триггеры --events Сохраняет события планировщика --databases Гарантирует, что в дампе будет CREATE DATABASE Восстановление: gunzip -c /root/backups/mysql/grafana-20260123-0220.sql.gz | mysql -u root -p Или, если у вас ~/.my.cnf: gunzip -c backup.sql.gz | mysql Если вы используете MariaDB — всё работает точно так же (она совместима с MySQL).