备份脚本及定时自动执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备份脚本及定时自动执行相关的知识,希望对你有一定的参考价值。

1、首先自己建一个目录,我建的目录路径为/root/bak/bakmysql

建立目录步骤:

cd /root(切换路径到root目录下)→mkdir bak(新建名称为bak的文件夹)→cd bak(进入bak目录下)→mkdir bakmysql(新建名为bakmysql的文件夹)

2、写备份脚本

#!/bin/bash

## 定义变量
back_dir=/root/bak/bakmysql
date=$(date +%Y%m%d%H%M)

## 进入备份目录
cd $back_dir
echo "$(date): begin to backup..."

## 用MYSQLDUMP备份
mysqldump -uroot -ppassword --default-character-set=UTF8 --single-transaction --quick --master-data=2 --flush-logs --add-drop-database --triggers --routines --events --databases databases_name > $back_dir/databases_name .$date.sql


if [ $? -eq 0 ] ## 如果命令成功
then
echo "backup successed!"
## 打包病压缩备份文件
tar -zcvf jlr.$date.tar.gz jlr.$date.sql && rm -f jlr.$date.sql
## 删除3天前的备份文件
find ./jlr.*.gz -mtime +3 -exec rm -f {} \\;
else ## 如果备份失败
echo "backup failed!"
fi
echo "$(date): end backup."

3、设置该脚本为自动定时执行

将路径切换到/etc下面→编辑crontab文件(vim crontab)

技术分享

最后一句为刚刚新增加的

然后保存退出

4、当以上工作都完成后执行整个定时备份的脚本也就完成了,

最后要说的就是,以上仅仅是一个简单的常规步骤,当然也还可以后其他的一些方法。比如在编辑crontab文件的时候,也可以直接执行crontab -e命令然后把最后那一行追加到文件中也可以。

我本人在做个定时脚本的时候也不是像上面说的那样简单,出现过各种问题,所以在这里将一些需要注意的地方列出来警示自己,也可以给各位提供一个参考

在做这个工作的时候:首先,你要确定自己的解决方案,需要用到哪些技术或者工具;其次,你要对自己用的技术和工具有一定的认识和了解

比如说上面的脚本我用到了mysqldump来备份数据库,用到了linux的crontab来实现定时,当时用的客户端连接工具是Xshell

这个时候你就需要对mysqldump的一些命令和参数有一定的了解了,比如说上面脚本中的

mysqldump -uroot -ppassword --default-character-set=UTF8 --single-transaction --quick --master-data=2 --flush-logs --add-drop-database --triggers --routines --events --databases databases_name > $back_dir/databases_name .$date.sql

这其中有许多参数,可以根据自己的实际需要去设置。比如我要备份的不是一个数据库,而是这个服务器上的所有数据库,这个时候就可以将--databases databases_name改为--all-databases。还有一点就是在代码中有一个 --flush-logs主要是关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。当要使用该功能是需要修改mysql配置文件my.cnf。将“log_bin                 = /var/log/mysql/mysql-bin.log”的注释去掉,如果远my.cnf中没有这一句的话就在文件中添加上,如图所示:

技术分享

鉴于本人目前水平,只能理解到这么多了,所以,以上所述均做参考,具体应用的时候,结合自己的实际情况而定

 

















以上是关于备份脚本及定时自动执行的主要内容,如果未能解决你的问题,请参考以下文章

mysql自动备份脚本及异地定时FTP

debian 脚本执行异常

nginx--基于crond定时服务+shell脚本实现nginx日志自动清理及备份

MySQL数据库的定时自动备份

linux crontab mysql定时自动备份

基于 mysql 镜像的定时自动备份数据和清除过期备份