使用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自动备份数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用shell脚本每天自动备份mysql数据库

SHELL脚本自动化备份MYSQL数据库

DBA使用Shell完成自动化相关工作

MySql DUMP 自动备份数据库 Shell 脚本

MySql DUMP 自动备份数据库 Shell 脚本

MySql DUMP 自动备份数据库 Shell 脚本