Mysqldump备份脚本

这里记录一个mysql常用的备份脚本,使用mysqldump备份。对于数据量不是很大的来说应该够用了。

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
export /etc/profile
#数据库用户
db_user=root
#数据库密码
db_pass=xxx
#数据库IP地址
db_ip=xxx
#数据库端口
db_port=3306



mysql=/bin/mysql
mysqldump=/bin/mysqldump
Date=`date +%Y%m%d`
Old_Date=`date '-d 30 day ago' "+%Y%m%d"`

Dir=/back/mysql_bak
#数据库备份目录
BakDir=$Dir/$Date
#备份的数据库表单
Datalist=$Dir/database.txt
#30天前备份的数据库文件所在目录
OldBak_Dir=$Dir/$Old_Date
#创建和进入备份文件夹
Log=$Dir/mysql_back.log
#接收报警的邮件
Mail=xxx@qq.com

mkdir $BakDir -p
cd $BakDir

echo "" >> $Log
echo "" >> $Log
echo "" >> $Log
echo "" >> $Log
echo "" >> $Log

echo " ********************************** $Date 备份开始 ********************************** " >> $Log
#获取最新数据库列表
$mysql -u$db_user -p$db_pass -h$db_ip -P$db_port -Bse "show databases" | grep -v mysql | grep -v performance_schema | grep -v test |grep -v information_schema > $Datalist
for i in `cat $Datalist`
do
Database=$i
DumpFile="$Database"_"$Date".sql
GZDumpFile="$Database"_"$Date".sql.tar.gz
echo "`date +%Y-%m-%d\ %H:%M:%S` 开始备份$Database" >> $Log
$mysqldump -u$db_user -p$db_pass -h$db_ip -P$db_port --force -q -R $Database > $DumpFile 2>/back/mysql_bak/mysqldump_error.log
if [ $? -ne 0 ]
then
echo "mysqldump $i error" | mail -s "mysqldump $i error" $Mail
fi
echo "`date +%Y-%m-%d\ %H:%M:%S` $Database备份完成" >> $Log
#打包和删除
echo "`date +%Y-%m-%d\ %H:%M:%S` 开始打包$Database" >> $Log
/bin/tar czvf $GZDumpFile $DumpFile
echo "`date +%Y-%m-%d\ %H:%M:%S` 打包完成$Database" >> $Log
/bin/rm $DumpFile
echo "`date +%Y-%m-%d\ %H:%M:%S` 删除原始文件$DumpFile" >> $Log
done

echo " ********************************** $Date 备份结束 ********************************** " >> $Log


#备份完成后刷新二进制日志
mysql -u$db_user -p$db_pass -h$db_ip -P$db_port -e 'flush logs'

#删除30天前备份的数据库文件所在目录
/bin/rm -rf $OldBak_Dir
坚持原创技术分享,您的支持将鼓励我继续创作!