背景:某企业MySQL数据库服务器(innodb引擎)须要在周六晚上零点执行全备,周一到周五以及周日使用增量备份,须要设计一个脚本
我设计的脚本以下,贴出来欢迎你们拍砖
#!/bin/bash
[ -f /tmp/lock ] && exit 2
touch /tmp/lock
[ -S /data/3306/mysql.sock ] || exit 1
today=$(date +%w)
yesterday=$(date +%w -d -1day)
fullback(){
rm -fr /backup/bak$today/ &&\
/usr/bin/innobackupex --user=root --password=123 --socket=/data/3306/mysql.sock --no-timestamp --use-memory=32M /backup/bak$today
}
increback(){
rm -fr /backup/bak$today/ &&\
/usr/bin/innobackupex --user=root --password=123 --incremental --socket=/data/3306/mysql.sock --incremental-basedir=/backup/bak$yesterday --no-timestamp --use-memory=32M /backup/bak$today
}
if [ $today -eq 6 ]
then
fullback
else
increback
fi
rm -f /tmp/lock
使用工具:xtrabackup,物理备份快捷高效
定时任务使用crontab
00 00 * /bin/bash /server/scripts/bakup_sql.sh >/dev/null 2>&1mysql