在 linux 中自动备份 mysql

以下是我在服务器上利用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