windows版
利用mysqldump工具进行逻辑备份,写成脚本,添加到windows计划任务。
脚本如下:
rem ---move old bakupfile to tmp folder /y means no prompt ---
if not exist "D:\bak\tmp" md "D:\bak\tmp"
move /y d:\bak\mysqlbak D:\bak\tmp
rem ----------------------------------------------------------
rem ---use mysqldump dump database to sql---
c:
cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"
mysqldump -uusername -ppassword databasename > d:\bak\mysqlbak\%date:~0,4%%date:~5,2%%date:~8,2%.sql
rem ---del old backupfile in D:\bak\tmp
rd /s /q D:\bak\tmp\
添加计划任务,选择基本任务。注意配置“起始于”选项,设置为脚本所在目录。
Linux版,转自网络
#!/bin/sh
###每天运行一次
###定义用户 密码 备份目录等信息
user=mysqldump
psd=mysqldump
backup_base=/data/mysql_backup
date=`date +%Y%m%d`
old_date=`date +%Y%m%d -d -30days` ###保存的天数
###获取库名,排除不需要备份的库
for db in `mysql -u$user -p$psd -s -N -e "show databases"|grep -v -E "(test|percona|information_schema|performance_schema)"`
do
###创建备份目录
if [ ! -d $backup_base/$db ];then
mkdir $backup_base/$db
fi
cd $backup_base/$db
chattr -i ./*
rm -f $old_date.sql* &>/dev/null #删除30天以前的
mysqldump -u$user -p$psd --events --routines $db |gzip > $date.sql.gz ###备份&压缩
chattr +i ./* ###这里加了个防误删的属性
done