Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本



脚本分为三部分配置信息、脚本文件、定时任务;

1、配置信息:



username=root
password=123456
backupsFileStr=/wocloud/db/backups
backupsFileDay=3
mysqldumpStr=/usr/bin/mysqldump
copydb=hebei,reportSystem



参数说明:

username:用户名
password:密码
backupsFileStr:保留备份数据文件绝路路径
backupsFileDay:备份数据文件保留天数
mysqldumpStr:导出工具mysqldump绝对路径
copydb:保存数据库名称,多个数据库用逗号分隔

2、脚本文件:



#!/bin/sh
#db_backups_conf.txt文件路径
db_backups_conf="/wocloud/shell/db_backups_conf.txt"#判断文件是否存在
if [ -f "${db_backups_conf}" ];then

 echo $(date +'%Y-%m-%d %H:%M:%S')" 数据库配置信息文件存在,开始进行数据备份" #获取等号前内容,作为map中的Key值
 dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))

 #获取等号后内容,作为map中的value值
 dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf})) #创建一个空map
 declare -A map=()

 #通过循环,将db_backups_conf配置文件中的信息存储在map中
 for((i=0;i<${#dbArrOne[@]};i++))
 do
 map[${dbArrOne[i]}]=${dbArrTwo[i]}
 done  #获取备份数据库的字符串
 copyDb=${map["copydb"]}

 #获取默认的字符串分隔符
 old_ifs="$IFS"

 #设置字符串分隔符为逗号
 IFS="," #将备份数据库value值的字符串进行分隔,获取一个数组
 dbArr=($copyDb) #将字符串的分隔符重新设置为默认的分隔符
 IFS="$old_ifs" #获取当前年月日
 saveday=$(date +%Y%m%d) #获取超出备份天数的年月日
 delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d) #遍历要备份的数据库,删除两天前备份的数据文件
 for delDb in ${dbArr[@]};
 do
 echo $(date +'%Y-%m-%d %H:%M:%S')" 删除文件:"${map["backupsFileStr"]}/${delDb}_database_${delday}.sql rm -f ${map["backupsFileStr"]}/${delDb}_database_${delday}.sql
 done #遍历要备份的数据库,备份数据文件
 for saveDb in ${dbArr[@]};
 do
 echo $(date +'%Y-%m-%d %H:%M:%S')" 备份数据库:"${saveDb}
 ${map["mysqldumpStr"]} -u${map["username"]} -p${map["password"]} ${saveDb} > ${map["backupsFileStr"]}/${saveDb}_database_${saveday}.sql
 done 

 echo $(date +'%Y-%m-%d %H:%M:%S')" 数据备份完毕,脚本执行完毕"else
 echo "文件不存在"
fi



注意:注意代码开头中读取配置文件的路径,这个位置可能不一样,需要进行适当修改。

3、定时任务:

Linux中的sh脚本定时任务,可以通过crontab进行管理,如果linux中没有安装crontab,需要进行安装:

安装命令:



yum -y install vixie-cron
yum -y install crontabs



服务管理



service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态



加入开机自启



chkconfig crond on



(1)设定定时任务:

crontab -e 编写定时任务表达式

例如:


1 */3 * * * /wocloud/shell/fileBackupsScript.sh &>/wocloud/shell/fileBackupsLogs/fileBackupsEcho_`date +\%Y-\%m-\%d-\%H-\%M-\%S`.txt 2>&1


定时表达式+脚本绝对路径+脚本打印信息日志输出绝对路径(一定要有日志输出记录,方便以后进行查看)

(2)重新启动crond

service crond restart;