From b24c6a928a6f65f82485bc1c6b5a391b921363ff Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Tue, 26 Nov 2019 21:13:05 +0800 Subject: [PATCH] update scripts --- codes/linux/soft/mysql-backup.sh | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 codes/linux/soft/mysql-backup.sh diff --git a/codes/linux/soft/mysql-backup.sh b/codes/linux/soft/mysql-backup.sh new file mode 100644 index 0000000..79aba5a --- /dev/null +++ b/codes/linux/soft/mysql-backup.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +#数据库IP +dbServer="127.0.0.1" +#数据库用户名 +dbUser="root" +#数据密码 +dbPassword="Tw#123456" +# 备份模式:备份所有数据库(ALL)|备份指定数据库列表(CUSTOM) +backupMode="ALL" +#backupMode="CUSTOM" +#数据库,如有多个库用空格分开 +databaseList="mysql sys" +#备份日期 +backupDate=`date +"%Y%m%d"` +#备份路径 +backupPath="/var/lib/mysql/backup" +#备份日志路径 +logPath="${backupPath}/mysql-backup.log" + +#日志记录头部 +mkdir -p ${backupPath} +touch ${logPath} +echo "------------------------------------------------------------------" >> ${logPath} +beginTime=`date +"%Y-%m-%d %H:%M:%S"` +echo "备份数据库开始,时间:${beginTime}" >> ${logPath} + +#正式备份数据库 +if [[ ${backupMode} == "ALL" ]];then + filename="all-${backupDate}" + #备份所有数据库 + source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} --all-databases > ${backupPath}/${filename}.sql` + 2>> ${logPath}; + #备份成功以下操作 + if [[ "$?" == 0 ]];then + cd ${backupPath} + #为节约硬盘空间,将数据库压缩 + tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null + #删除原始文件,只留压缩后文件 + rm -f ${backupPath}/${filename}.sql + #删除七天前备份,也就是只保存7天内的备份 + find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 + echo ">>>> 备份所有数据库成功!" >> ${logPath} + else + #备份失败则进行以下操作 + echo ">>>> 备份所有数据库失败!" >> ${logPath} + fi +else + #备份指定数据库列表 + for database in ${databaseList}; do + filename="${database}-${backupDate}" + source=`mysqldump -h ${dbServer} -u ${dbUser} -p${dbPassword} ${database} > ${backupPath}/${filename}.sql` 2>> ${logPath}; + #备份成功以下操作 + if [[ "$?" == 0 ]];then + cd ${backupPath} + #为节约硬盘空间,将数据库压缩 + tar zcf ${filename}.tar.gz ${filename}.sql > /dev/null + #删除原始文件,只留压缩后文件 + rm -f ${backupPath}/${filename}.sql + #删除七天前备份,也就是只保存7天内的备份 + find ${backupPath} -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 + echo ">>>> 备份数据库 ${database} 成功!" >> ${logPath} + else + #备份失败则进行以下操作 + echo ">>>> 备份数据库 ${database} 失败!" >> ${logPath} + fi + done +fi +endTime=`date +"%Y-%m-%d %H:%M:%S"` +echo "备份数据库结束,时间:${endTime}" >> ${logPath}