为了防止数据丢失,需要对MySql的数据进行备份,利用Linux的定时任务实现每日自动备份MySql。
前提
需要用到定时任务,首先确保Linux安装了“crontab”。
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
步骤
1. 编写备份脚本
#!/bin/sh
bak_path=/app/dbback # 数据库数据文件备份目录
date_now=`date +%Y%m%d` # 当前
date_dep=`date -d "-10 week" +%Y%m%d` # 7天前日期
cd $bak_path
echo "================Backup database================">>log
if [ -d $date_dep ]; then
echo "`date '+%F %H:%M:%S'` Remove deprecated folder $date_dep.">>log
rm -rf $date_dep # 删除7天前备份数据
fi
if [ ! -d $date_now ]; then
mkdir $date_now # 创建当前日期备份数据文件夹
fi
cd $date_now
echo "`date '+%F %H:%M:%S'` Begin to backup " >> ../log
mysqldump --host=[数据库IP] --opt -u[用户名] -p[密码] --default-character-set=utf8 [库名] |gzip > *.gz
# 使用mysqldump备份数据库实例并压缩成gzip格式
echo "`date '+%F %H:%M:%S'` Finish to backup." >> ../log
echo "" >> ../log
2. 启动定时任务
两种方式
1、crontab -e 编写
2、vim /etc/crontab
5 0 * * * root [备份脚本路径]
每天00:05执行备份
3. 检查结果
如果想立即看到效果,可以重启crond服务,定时任务会立即执行一遍,没问题的话备份目录会出现一个以当前日期命名的文件夹,里面有一份.gz文件,解压后是.sql文件。可以用navicat或命令进行数据恢复。