以下是我在服务器上利用cron部署的自动备份mysql数据库的shell脚本,脚本按天生成每次备份目录,生成的文件经过 gzip 压缩节省磁盘空间。
编辑口令配置 /home/mysql_backup/extra.cnf
[client]
user=mysqluser
password=mysqlpassword
编辑备份脚本 /home/mysql_backup/backsql.sh
#!/bin/bash
root='/home/back/mysql'
data="$root/data"
extra="$root/extra.cnf"
tag=`date +%Y/%m%d`
log="$data/backup.log"
mkdir -p $data/$tag/
mysqldump --defaults-extra-file=$extra tableName | pigz > $data/$tag/tableName.sql.gz
# 删除10天以前的备份
find $root/* -mtime +10 -exec rm {} \;
# 写日志
echo "backup finished at $(date +'%Y-%m-%d %H:%M:%S')" >> $log
修改计划任务
sudo crontab -e
在文件末尾添加以下行:
0 5 * * * root sh /home/mysql_backup/backsql.sh