您的位置:首页 > 运维架构 > Linux

Linux 自动备份mysql数据

2017-10-25 21:25 615 查看

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 命令详细用法及示例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: