使用shell自动备份数据库
Posted Microtiger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用shell自动备份数据库相关的知识,希望对你有一定的参考价值。
#!/bin/sh #mysql地址 #检测用户是否手动输入了密码 mysql_host="" #mysql用户 mysql_user="" #mysql密码 mysql_password="" #mysql数据库名 #如果不填写需要导出的数据库名称提示错误信息并终止执行,注意[]里面两边必须有空格 if [ ! -n "$1" ];then echo "您没有输入数据库名称" echo "格式:xxx.sh 数据库名称" exit fi mysql_name="$1" #mysql安装路径 mysql_path="/usr/bin/" #备份文件存放路径 bak_path="/root/shell/mysqlBak/${mysql_name}" #删除过期数据 true代表是 false代表否 delete_overdue_data="true" #删除多少天前数据 默认30天 delete_overdue_data_days=30 #检测目录是否存在,如果不存在自动创建目录 if [ ! -x "${bak_path}" ];then mkdir "${mysql_name}" chmod 755 "${bak_path}" fi #备份时间 bak_date=`date +%F` ${mysql_path}/mysqldump --opt -u${mysql_user} -p${mysql_password} -h${mysql_host} ${mysql_name} | gzip > ${bak_path}/${bak_date}.sql.gz #检测是否删除过期数据 if [ "${delete_overdue_data}" != "true" ];then echo "备份数据完成..." exit fi #删除过期备份数据 #获取今天日期 the_date_today=`date +%Y%m%d` #获取要删除的文件 find_date_file=`date -d "${the_date_today} ${delete_overdue_data_days} days ago" "+%Y-%m-%d"` #进入指定目录 cd ${bak_path} #查找要删除的数据 ls -l|grep ${find_date_file} #取得查找结果0不存在 1存在 result=$? echo ${result} if [ ${result} == 0 ];then echo "删除过期数据" `rm -f ${find_date_file}.*`
以上是关于使用shell自动备份数据库的主要内容,如果未能解决你的问题,请参考以下文章