首页 > Script > MySql备份脚本
2019
04-10

MySql备份脚本

!/bin/bash
dbtabase user
USER="XXX"
database password
PASSWORD="XXX"
backup destination
DIR="/home/cx-db-backup"
db names that are skipped when backup
DBLIST=("XXX")
Retention days
RETENTIONDAYS=14
year=date +%Y
month=date +%m
day=date +%d
hour=date +%H
hms=date +%H%M%S
if [ ! -e $DIR/$year/$month/$day/$hour ]; then
mkdir -p $DIR/$year/$month/$day/$hour
fi
array=echo "show databases;"|mysql -u$USER -p$PASSWORD 2>/dev/null|sed "1d"
dobackup="false"
rm -Rf $DIR/$year/$month/$day/$hour/time_*
touch $DIR/$year/$month/$day/$hour/time_$year$month$day$hms
for var in ${array[@]}
do
for temp in ${DBLIST[@]}
do
if [ "$var" == "$temp" ]; then
dobackup="true"
fi
done
if [ "$dobackup" == "true" ]; then
mysqldump -u$USER -p$PASSWORD --single-transaction --master-data=2 --triggers --routines --events --default-character-set=utf8 --set-gtid-purged=OFF -B $var 2>/dev/null| gzip > $DIR/$year/$month/$day/$hour/$var.sql.gz
fi
dobackup="false"
done
remove old backup
year=date -d"-$RETENTIONDAYS day" +%Y
month=date -d"-$RETENTIONDAYS day" +%m
day=date -d"-$RETENTIONDAYS day" +%d
rm -Rf $DIR/$year/$month/$day
if the month directory is empty, remove it
if [ -d $DIR/$year/$month ]; then
dirfilenum=ls $DIR/$year/$month | wc | awk '{print $1}'
if [ $dirfilenum -eq 0 ]; then
rm -Rf $DIR/$year/$month
fi
fi
if [ -d $DIR/$year ]; then
if the year directory is empty, remove it
dirfilenum=ls $DIR/$year | wc | awk '{print $1}'
if [ $dirfilenum -eq 0 ]; then
rm -Rf $DIR/$year
fi
fi
最后编辑:
作者:李国庆
这个作者貌似有点懒,什么都没有留下。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

留下一个回复

你的email不会被公开。