Skip to content

Commit b24c6a9

Browse files
committed
update scripts
1 parent 98c2ec0 commit b24c6a9

1 file changed

Lines changed: 70 additions & 0 deletions

File tree

codes/linux/soft/mysql-backup.sh

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#!/usr/bin/env bash
2+
3+
#数据库IP
4+
dbServer="127.0.0.1"
5+
#数据库用户名
6+
dbUser="root"
7+
#数据密码
8+
dbPassword="Tw#123456"
9+
# 备份模式:备份所有数据库(ALL)|备份指定数据库列表(CUSTOM)
10+
backupMode="ALL"
11+
#backupMode="CUSTOM"
12+
#数据库,如有多个库用空格分开
13+
databaseList="mysql sys"
14+
#备份日期
15+
backupDate=`date +"%Y%m%d"`
16+
#备份路径
17+
backupPath="/var/lib/mysql/backup"
18+
#备份日志路径
19+
logPath="${backupPath}/mysql-backup.log"
20+
21+
#日志记录头部
22+
mkdir -p ${backupPath}
23+
touch ${logPath}
24+
echo "------------------------------------------------------------------" >> ${logPath}
25+
beginTime=`date +"%Y-%m-%d %H:%M:%S"`
26+
echo "备份数据库开始,时间:${beginTime}" >> ${logPath}
27+
28+
#正式备份数据库
29+
if [[ ${backupMode} == "ALL" ]];then
30+
filename="all-${backupDate}"
31+
#备份所有数据库
32+
source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} --all-databases > ${backupPath}/${filename}.sql`
33+
2>> ${logPath};
34+
#备份成功以下操作
35+
if [[ "$?" == 0 ]];then
36+
cd ${backupPath}
37+
#为节约硬盘空间,将数据库压缩
38+
tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null
39+
#删除原始文件,只留压缩后文件
40+
rm -f ${backupPath}/${filename}.sql
41+
#删除七天前备份,也就是只保存7天内的备份
42+
find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
43+
echo ">>>> 备份所有数据库成功!" >> ${logPath}
44+
else
45+
#备份失败则进行以下操作
46+
echo ">>>> 备份所有数据库失败!" >> ${logPath}
47+
fi
48+
else
49+
#备份指定数据库列表
50+
for database in ${databaseList}; do
51+
filename="${database}-${backupDate}"
52+
source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} ${database} > ${backupPath}/${filename}.sql` 2>> ${logPath};
53+
#备份成功以下操作
54+
if [[ "$?" == 0 ]];then
55+
cd ${backupPath}
56+
#为节约硬盘空间,将数据库压缩
57+
tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null
58+
#删除原始文件,只留压缩后文件
59+
rm -f ${backupPath}/${filename}.sql
60+
#删除七天前备份,也就是只保存7天内的备份
61+
find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
62+
echo ">>>> 备份数据库 ${database} 成功!" >> ${logPath}
63+
else
64+
#备份失败则进行以下操作
65+
echo ">>>> 备份数据库 ${database} 失败!" >> ${logPath}
66+
fi
67+
done
68+
fi
69+
endTime=`date +"%Y-%m-%d %H:%M:%S"`
70+
echo "备份数据库结束,时间:${endTime}" >> ${logPath}

0 commit comments

Comments
 (0)