MySQL需结合cron与mysqldump实现自动备份:编写含压缩、清理、日志的脚本,配置~/.my.cnf认证,设置定时任务,并建议验证备份、异地保存及大库优化。

MySQL 本身不内置定时备份功能,需要结合操作系统(如 Linux 的 cron)和命令行工具(如 mysqldump)来实现自动备份。核心思路是:写好备份脚本 → 设置定时任务 → 定期执行并保留历史版本。
mysqldump 是最常用、轻量且可靠的逻辑备份方式,适合中小规模数据库。基本命令如下:
mysqldump -u用户名 -p密码 --single-transaction 数据库名 > /backup/dbname_$(date +\%F).sql
mysqldump -u用户名 -p密码 --single-transaction --databases db1 db2 > /backup/multi_$(date +\%F).sql
mysqldump -u用户名 -p密码 --single-transaction --all-databases > /backup/all_$(date +\%F).sql
注意:加 --single-transaction 可保证 InnoDB 表的一致性快照;避免在命令中明文写密码(有安全风险),建议用 ~/.my.cnf 配置文件存认证信息。
把备份逻辑封装成 shell 脚本,便于维护和定时调用。例如创建 /opt/scripts/mysql_backup.sh:
#!/bin/bash BACKUP_DIR="/backup/mysql" DATE=$(date +\%Y\%m\%d_\%H\%M) mkdir -p $BACKUP_DIR <h1>使用配置文件中的账号(~/.my.cnf)</h1><p>mysqldump --single-transaction --all-databases | gzip > $BACKUP<em>DIR/full</em>$DATE.sql.gz</p><h1>只保留最近7天的备份</h1><p>find $BACKUP<em>DIR -name "full</em>*.sql.gz" -mtime +7 -delete
给脚本执行权限:chmod +x /opt/scripts/mysql_backup.sh。确保 ~/.my.cnf 内容类似:
[client] user = backup_user password = your_secure_password
并设为仅属主可读:chmod 600 ~/.my.cnf。
编辑 root 或专用用户的 crontab:sudo crontab -e,添加一行:
0 2 * * * /opt/scripts/mysql_backup.sh
0 3 * * 0 /opt/scripts/mysql_backup.sh full 和 0 3 * * 1-6 /opt/scripts/mysql_backup.sh critical(需在脚本中判断参数)保存后 cron 会自动加载。可用 sudo systemctl status cron(Debian/Ubuntu)或 sudo systemctl status crond(CentOS/RHEL)确认服务运行正常。
自动备份只是第一步,还需保障备份真正可用:
echo "$(date): Backup done" >> /var/log/mysql_backup.log
mydumper(支持多线程、更高效)替代 mysqldump不复杂但容易忽略。
以上就是mysql如何进行定时备份_mysql自动备份配置方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号