创建备份文件存储目录:
mkdir -p /root/backup/mysql
查找mysqldump安装位置的绝对路径:
which mysqldump
在/root/backup目录创建自动备份脚本mysqlback.sh:
vim /root/backup/mysqlback.sh
mysqlback.sh脚本内容:
#!/bin/bash
db_user="用户名"
db_password="密码"
db_name="数据库名"
# date format for backup file (yyyyMMdd_hhmmss)
time="$(date +"%Y%m%d_%H%M%S")"
backup_dir="/root/backup/mysql"
#备份并压缩,注意:mysqldump 要为绝对路径,例如 /usr/bin/mysqldump
/usr/bin/mysqldump -u$db_user -p$db_password $db_name | gzip > $backup_dir/$db_name_$time.sql.gz
#删除七天之前的备份
find $backup_dir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
赋予脚本可执行权限:
chmod u+x mysqlback.sh
创建定时任务:
crontab -e
输入以下内容,意思是每天凌晨2点执行备份数据库脚本mysqlback.sh
0 2 * * * root /root/backup/mysqlback.sh #每天凌晨2点备份数据库
执行命令查看定时任务是否添加成功:
crontab -l
现在就已经实现每天自动备份数据库的功能了,备份后的文件会存储在/root/backup/mysql目录下,备份文件以日期时间命名,压缩为gz格式,可以使用gunzip命令解压。
参考资料: