Linux 自动备份mysql数据

Linux 自动备份mysql数据

lz阿里云服务器环境如下
- centos7.4
- mysql5.7

1. 创建shell脚本

知识点
- mysqldump
mysqldump常用于MySQL数据库逻辑备份

编辑shell脚本:vi /bak/bakmysql/backup.sh

#!/bin/sh 
cd /bak/bakmysql
echo "You are in bakmysql directory"
#将之前文件转到bakmysqlold里
mv bakmysql* /bak/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"

#获得当前日期
Now=$(date +"%d-%m-%Y") 
File=bakmysql-$Now.sql 

**#将数据库备份为bakmysql-%d-%m-%Y.sql**
mysqldump -uroot -p'password' db_bbs > $File 
echo "Your database backup successfully completed"

#将七天之前的数据库备份文件删除
SevenDays=$(date -d -7day  +"%d-%m-%Y") 

#判断是否有七天之前的数据库备份文件
if [ -f /bak/bakmysqlold/bakmysql-$SevenDays.sql ] 
then
#有则删除
rm -rf /bak/bakmysqlold/bakmysql-$SevenDays.sql 
echo "You have delete 7days ago bak file "
else
#无文件
echo "7days ago bak file not exist "
fi

可加上邮件发送功能,lz用的是MUTT邮件发送
可惜遇到了以下的错误,有人遇到的可否告诉我一声如何解决
这里写图片描述

出现Connection timed out with xxxx.com.的错误
打开了防火墙的25端口也如此。
持续更新解决状态。。

2. 添加shell脚本执行权限

执行./backup.sh是遇到以下错误

./backup.sh: Permission denied

这意味着没有该文件执行的权限

 chmod u+x backup.sh
 这意味着chmod u+x backup.sh 只授予这个文件的所属者执行的权限 

3. 创建定时任务

知识点
1. cron表达式
2. crontab用法

步骤

crontab -e

在最后加入这样一行(具体含义请自行参考/etc/crontab中的注释):
0 0 * * * /bak/bakmysql/backup.sh
#0 0 * * * 意思为每天12点执行脚本(cron表达式知识点)

重启crontab:/sbin/service crond restart

如果没有设置crontab为开机自启动可以如下设置其开机自启动:chkconfig –level 35 crond on
可以执行backup.sh脚本,看看最终的效果

参考
创建Linux下每天自动备份MySQL数据库的脚本
Linxu MUTT邮件发送配置
Linux crontab 命令详细用法及示例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值