Mysql数据库定时备份
使用命令
- mysqldump Mysql自带备份命令
- crontab 定时任务工具
步骤
- 使用mysqldump命令编写sh脚本
- 将脚本添加进crontab定时执行
shell备份脚本
如果存在今日的备份,备份失败
如果不存在备份,如果有10天前的备份就删除,备份今日sql并将sql压缩打包,删除打包之前的sql
注意
- 赋予shell脚本执行权限
chmod+x ./backupmysql.sh
- 需要
source /etc/profile
才可以执行环境变量中的命令,如果还不行可以换成命令的绝对路径 $(date +%Y%m%d --date='10 days ago')
10表示10天前的日期- 由于
Mysql
高版本不支持命令行写入密码,所以要在my.cnf
中如下配置,这样在使用mysqldump
时就不需要设置密码了- 打开配置文件
vim /etc/mysql/my.cnf
- 写入配置
[mysqldump] user=your_backup_user_name password=your_backup_password
- 打开配置文件
完整backupmysql.sh
文件
#!/bin/bash
BackupPath=/data/backup/ #脚本目录
mysql_bk_dir=$BackupPath/mysql_bk_dir #备份文件目录
LogFile=$BackupPath/backup.log #日志文件路径
dbName=name #数据库名称
source /etc/profile #引入环境变量
NewFile="$mysql_bk_dir"/$(date +%Y%m%d)"$dbName".tgz
DumpFile="$mysql_bk_dir"/$(date +%Y%m%d)"$dbName".sql
OldFile="$mysql_bk_dir"/$(date +%Y%m%d --date='10 days ago')"$dbName".tgz
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists!" >> $LogFile
else
cd $Mysql_bk_dir
mysqldump "$dbName"> $DumpFile
tar czf $NewFile $i$(date +%Y%m%d)"$dbName".sql >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
if [ ! -f $OldFile];then
echo "OldFileFile is exists"
else
rm -rf $OldFile
fi
rm -rf $DumpFile
fi
crontab配置
- 打开配置
crontab -e
- 新建任务(每日凌晨1:30执行)
30 1 * * * /data/backup/backupmysql.sh
- 查看任务
crontab -l
更多crontab
配置教程点此前往查看