1.先将mysql的备份命令写成脚本文件形式
#!/bin/bash
# MySQL Server 登录信息
MYUSER="root"
MYPASS="jf@qzt&SHlt1"
MYHOST="localhost"
MYPORT="3306"
#MYDB="idc-message-push"
# 备份相关配置信息
BAKDIR="/root/db-backup" # 备份保存目录
#BAKFILE="$BAKDIR/$MYDB.$(date +'%Y-%m-%d-%H%M%S').sql.gz" # 备份文件名
KEEPDAYS=7 # 保留天数
# 创建备份目录
if [ ! -d "$BAKDIR" ]; then
mkdir -p "$BAKDIR"
fi
# 备份数据库至压缩文件
#单库需要备份的数据库名单
cat > mydbs <<EOF
International_bureau
idc-message-push
ip_plugging
warehouse_management
zabbix
EOF
##备份单库
for MYDB in `cat mydbs`
do
if [ ! -d "$BAKDIR/$MYDB" ]; then
mkdir -p "$BAKDIR/$MYDB"
fi
BAKFILE="$BAKDIR/$MYDB/$MYDB.$(date +'%Y-%m-%d-%H%M%S').sql.gz"
mysqldump -h "$MYHOST" -P "$MYPORT" -u "$MYUSER" -p"$MYPASS" --databases "$MYDB" | gzip > "$BAKFILE"
done
##备份整库
mysqldump -h "$MYHOST" -P "$MYPORT" -u "$MYUSER" -p"$MYPASS" --all-databases | gzip > $BAKDIR/mysql.$(date +'%Y-%m-%d-%H%M%S').sql.gz
# 清理旧备份文件,只保留指定天数内的备份,超过时间的就会被清除
find "$BAKDIR" -name '*.sql.gz' -type f -mtime +"$KEEPDAYS" -delete
2.给脚本文件授权(可执行权限)
chmod 777 mysql-backup.sh
3.使用 crontab 命令设置定时任务
0 2 * * * /root/db-backup/mysql-backup.sh
4.一些基本的crontab命令示例
crontab -l :列出当前用户的所有定时任务。
crontab -e :编辑当前用户的定时任务。
crontab -r :删除当前用户的所有定时任务。
crontab -u user -l :列出指定用户的所有定时任务。
crontab -u user -e :编辑指定用户的定时任务。
crontab -u user -r :删除指定用户的所有定时任务。