linux中定时备份mysql数据库

以下是执行数据库备份的脚本

  • /root/myshelldir/mysqlshell.sh
#执行此文件时的时间(注意这里的格式转换)
BACKUPTIME=$(date +%Y-%m-%d_%H%M%S)

#数据库地址
HOST=39.103.200.101

#数据库用户名
USER=root

#数据库密码
PASSWORD=12345678

#需要备份的数据库名称
DATABASE=health


#创建备份目录,如果存在,则不用创建(注意这里如何递归创建目录)
[ ! -d "$BACKUPPATH/$BACKUPTIME" ]&& mkdir -p "$BACKUPPATH/$BACKUPTIME"

#备份数据库(注意这里如何进行数据库的配置的)
mysqldump -u$USER -p$PASSWORD --host=$HOST -q -R --databases $DATABASE | gzip> $BACKUPPATH/$BACKUPTIME/$BACKUPTIME.sql.gz

#将文件处理成tar.gz
cd ${BACKUPPATH}
tar -zcvf $BACKUPTIME.tar.gz  ${BACKUPTIME}
rm -rf ${BACKUPPATH}/${BACKUPTIME}

#删除10天前的备份文件
find ${BACKUPPATH} -atime +10 -name ".tar.gz" -exec rm -rt {} \;
echo "备份数据库${DATABASE}成功"
  • 上面关于find -exec 的解释:

exec解释:
-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删> 除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了> > 使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

  • 上面关于find -atime +10 的解释:

表示文件在10天以上没有被访问过的文件
-atime参考文章

所以find所在行的意思就是找出10天以上没有访问过且以.tar.gz结尾的文件,将他们递归分询问删除

下面编写定时文件脚本:

输入命令:crontab -e进入编辑界面
输入:

image

至此:现在已经开启数据库中health库的自动备份,每天2:30自动备份,且会自动删除10天前的备份数据,防止linux硬盘压力过大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值