数据库备份脚本按照时间来创建目录备份数据,需要配合每天早上凌晨点备份数据年月日期时间主机创建备份目录备份数据库生成文件删除超过天的文件,并删除目录压缩备份还原每月备份的数据会放到一个目录,十分乱,不容。。。。。。。
数据库备份脚本
按照时间来创建目录备份数据,需要配合crontab
1
|
00 1 * * * root /etc/mysqldumpjumpser.sh
|
每天早上凌晨1点备份数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#!/bin/bash
USER=jumpserver
PASS=jumpserver
DBDIR=/databak/Data_Backup
#DAY=`date +%Y%m%d`
#年月
MONTH=`date +%Y%m`
#日期时间
DT=`date '+%Y%m%d%H%M'`
#主机ip
DBIP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | awk -F '"' '{print $2}'`
#创建备份目录
mkdir -p $DBDIR/$DBIP/$MONTH
备份数据库
for dbname in jumpserver
do
mysqldump -u$USER -p$PASS -R --single-transaction $dbname 2>>$DBDIR/$DBIP/$MONTH/error-$DT.log |gzip > $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz
# 生成md5sum文件
md5sum $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz > $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz.MD5
done
# check and delete old datafile.
#删除超过30天的文件,并删除目录
del_backup_dir=/databak/Data_Backup/$DBIP
cd $del_backup_dir
if [ $? = 0 ]; then
find ./ -type f -mtime +30 -exec rm -rf {} \; >/dev/null 2>&1
find -depth -type d -empty -exec rmdir {} \;
fi
#压缩备份
#mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
#还原
#gunzip -c abc.sql.gz |mysql -uroot -proot abc
|
每月备份的数据会放到一个目录,十分乱,不容易看,这边改进一下
没有多大的改变,就是加了DAY=`date -d ‘-1 days’ +%d` :显示上一天的日期,我们crontab是凌晨1点备份,也就是备份上一天的数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#!/bin/bash
USER=jumpserver
PASS=jumpserver
DBDIR=/databak/Data_Backup
DAY=`date -d '-1 days' +%d`
MONTH=`date +%Y%m`
DT=`date '+%Y%m%d%H%M'`
DBIP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IP | awk -F '"' '{print $2}'`
mkdir -p $DBDIR/$DBIP/$MONTH/$DAY
for dbname in jumpserver
do
mysqldump -u$USER -p$PASS -R --single-transaction $dbname 2>>$DBDIR/$DBIP/$MONTH/$DAY/error-$DT.log |gzip > $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz
# 生成md5sum文件
md5sum $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz > $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz.MD5
done
# check and delete old datafile.
del_backup_dir=/databak/Data_Backup/$DBIP
cd $del_backup_dir
if [ $? = 0 ]; then
find ./ -type f -mtime +30 -exec rm -rf {} \; >/dev/null 2>&1
find -depth -type d -empty -exec rmdir {} \;
fi
#压缩备份
#mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
#还原
#gunzip -c abc.sql.gz |mysql -uroot -proot abc
|
以日期目录分类,可以更方便的清楚