Linux 定时备份 MySQL 数据库(完整教程)

张开发
2026/4/4 20:59:04 15 分钟阅读

分享文章

Linux 定时备份 MySQL 数据库(完整教程)
为了防止数据丢失我们需要定时把数据备份起来。我们使用用Linux crontab mysqldump实现定时自动备份包含备份、压缩、保留历史、自动清理旧文件。一、先准备备份脚本创建一个备份脚本mysql_backup.sh放在/usr/local/bin/方便管理。#!/bin/bash # 配置项请修改这里 # MySQL 用户名 MYSQL_USERroot # MySQL 密码 MYSQL_PASS你的MySQL密码 # MySQL 主机一般不用改 MYSQL_HOSTlocalhost # 要备份的数据库名多个用空格隔开 DATABASESdb1 db2 db3 # 备份文件存放目录 BACKUP_DIR/data/backup/mysql # 保留多少天的备份自动删除过期文件 DAYS_KEEP7 # # 创建备份目录不存在则自动创建 mkdir -p $BACKUP_DIR # 获取当前时间 DATE$(date %Y%m%d_%H%M%S) # 循环备份每个数据库 for DB in $DATABASES do echo 开始备份数据库$DB mysqldump -h$MYSQL_HOST -u$MYSQL_USER -p$MYSQL_PASS --databases $DB | gzip $BACKUP_DIR/${DB}_${DATE}.sql.gz done # 删除7天前的备份文件 find $BACKUP_DIR -name *.sql.gz -mtime $DAYS_KEEP -delete echo MySQL 备份完成二、给脚本执行权限chmod x /usr/local/bin/mysql_backup.sh三、测试脚本是否能正常运行/usr/local/bin/mysql_backup.sh✅ 运行后去/data/backup/mysql/看有没有生成.sql.gz备份文件有就说明正常。四、设置定时任务crontab1. 编辑定时任务crontab -e2. 添加定时规则示例# 每天凌晨 2:00 自动备份 0 2 * * * /usr/local/bin/mysql_backup.sh /var/log/mysql_backup.log 21常用定时示例# 每天凌晨2点备份推荐 0 2 * * * /usr/local/bin/mysql_backup.sh /var/log/mysql_backup.log 21 # 每6小时备份一次 0 */6 * * * /usr/local/bin/mysql_backup.sh /var/log/mysql_backup.log 21 # 每周日凌晨3点备份 0 3 * * 0 /usr/local/bin/mysql_backup.sh /var/log/mysql_backup.log 213. 查看定时任务是否生效crontab -l五、备份文件说明备份路径/data/backup/mysql/文件名格式库名_20260404_020000.sql.gz自动压缩体积小自动删除 7 天前的备份六、恢复备份方法如果你需要恢复数据执行# 解压 gzip -d 备份文件.sql.gz # 恢复 mysql -u root -p 库名 备份文件.sql七、安全优化可选但推荐不建议在脚本里明文写密码更安全的方式创建 MySQL 配置文件vi /etc/my.cnf.d/mysql-backup.cnf写入ini[mysqldump] userroot password你的密码 hostlocalhost然后修改权限bash运行chmod 600 /etc/my.cnf.d/mysql-backup.cnf最后把脚本里的-u$MYSQL_USER -p$MYSQL_PASS删掉即可更安全。

更多文章