在当前用户根目录下创建.my.cnf文件
[client]
user=数据库用户名
password=数据库密码进入数据库中,给该用户授予 PROCESS 权限(root也要这一步)
GRANT PROCESS ON *.* TO '你的用户名'@'localhost';
FLUSH PRIVILEGES;进入想备份的服务器路径,创建备份脚 backup.sh并给予执行权限 chmod 777 backup.sh
#!/bin/bash
# 备份配置
BACKUP_DIR="./"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="./mysql_backup.log"
# 创建备份目录
#mkdir -p $BACKUP_DIR
# 执行备份(使用--no-tablespaces)
echo "$(date): 开始备份" >> $LOG_FILE
mysqldump 你要备份的数据库名 > $BACKUP_DIR/你要备份的数据库名_$DATE.sql 2>> $LOG_FILE
if [ $? -eq 0 ]; then
# 压缩备份
gzip $BACKUP_DIR/你要备份的数据库名_$DATE.sql
echo "$(date): 备份成功" >> $LOG_FILE
else
echo "$(date): 备份失败" >> $LOG_FILE
exit 1
fi
# 清理旧备份(保留7天)
find $BACKUP_DIR -name "*.gz" -mtime +7 -delete完成后可执行一次脚本查看运行是否正常
执行./backup.sh 若出现压缩文件和日志文件,且压缩文件大小在正常范围,则脚本可正常执行。
设置定时任务(Crontab)
执行 crontab -e ,添加以下命令至最后一行
# 每周日凌晨3点备份
0 3 * * 0 /bin/bash 你的backup.sh脚本绝对路径至此,自动备份脚本结束,可等待第二天验证。