MySQL_dump/Readme
2026-01-23 14:59:20 +07:00

72 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Вот надёжный шаблон скрипта для резервного копирования 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).