失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本

Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本

时间:2023-07-26 14:57:38

相关推荐

Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本

引言:

前段时间闹得沸沸扬扬的“微盟”事件,让人们更加明白了数据安全的重要性。一个企业数据丢失会付出很大的代价,最坏的情况下,丢失数据可能会导致企业的崩溃。根据国家档案与记录管理局的研究显示,在没有很好的数据保护和恢复策略的公司中,80%的公司将在发生数据大灾难的两年内倒闭。为了避免上述情况发生,除了对员工的身份权限和数据业务访问权限管控外, 还要对数据安全管理机制全面加固与整改、加强运维平台治理、加强灾备体系的建设,从管理机制与基础设施建设两方面构筑安全防线,以杜绝此类事件再次发生。

脚本:

[root@localhost ~]# vim mysqlbackup.sh#!/bin/bashdate=`date +%Y%m%d`backuppath=/root/backupdbhost=192.168.2.161dbuser=rootdbpasswd=123456db=testif [ ! -d $backuppath ] ;thenmkdir /root/backup && echo "备份目录创建成功!" elseecho "备份目录已存在!"ficd $backuppathmkdir -p $datecd $datemysqldump -h$dbhost -u$dbuser -p$dbpasswd $db > $date.sqlfind $backuppath -type d -mtime +7 -exec rm -rf {} \;

1.创建脚本变量

date=`date +%Y%m%d`backuppath=/root/backupdbhost=192.168.2.161dbuser=rootdbpasswd=123456db=test

注:

以下变量除date外,其他都是可以根据自身情况去修改的。

date=date +%Y%m%d //其中"date"与"+"之间必须有个空格,否则语法错误backupath=/root/backup //创建备份文件目录dbhost=192.168.2.161 //数据库主机IPdbuser=root //数据库用户dbpasswd=123456 //数据库密码db=test //数据库库名

2.创建备份目录

if [ ! -d $backuppath ] ;thenmkdir /root/backup && echo "备份目录创建成功!"elseecho "备份目录已存在!"fi

这里会判断备份目录是否存在,如果存在则输出“已存在”,不存在则创建。

3.创建当天备份目录

cd $backuppathmkdir -p $datecd $date

切换到备份目录中,根据当前时间来创建一个目录,用于存放当天的备份文件,再切换至当天的备份目录中。

4.备份单个数据库

mysqldump -h$dbhost -u$dbuser -p$dbpasswd $db > $date.sql

目前脚本已经切换至当天的备份目录中,使用mysqldump对单个数据库进行备份,备份名为当天日期.sql。

5.定期删除备份文件

find $backuppath -type d -mtime +7 -exec rm -rf {} \;

只是一味地备份也不行,磁盘再大也有用完的那一天,况且很久以前的数据也没有任何意义,我们需要备份的是近期最新的数据,所以定期删除文件就很有必要了。

-type d//表示查找目录,d表示目录-mtime +7 //表示按照文件的更改时间来查找文件,+7表示距现在7天以前-exec rm -rf {} \; //exec后面跟要执行的shell命令,然后是{},一个空格,一个\,最后一个分号;

6.赋予脚本可执行权限

[root@localhost ~]# ll mysqlbackup.sh -rw-r--r-- 1 root root 425 3月 25 06:35 mysqlbackup.sh[root@localhost ~]# chmod u+x mysqlbackup.sh[root@localhost ~]# ll mysqlbackup.sh -rwxr--r-- 1 root root 425 3月 25 06:35 mysqlbackup.sh

7.创建周期性计划任务 -Crontab

Crontab格式*分*时*日*月*周执行的命令第 1 列分钟 1~59,每分钟用 *或者*/1表示,整点分钟数为00或0第 2 列小时 1~23(0 表示 0 点)第 3 列日 1~31第 4 列月 1~12第 5 列星期 0~6(0 表示星期天)第 6 列要运行的命令[root@localhost ~]# systemctl status crond● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since 一 -03-23 08:56:54 CST; 2 days ago[root@localhost ~]# crontab -e0 21 * * * /root/mysqlbackup.sh//每天22点执行备份脚本,可自行调整时间[root@localhost ~]# systemctl restart crond //重启crond服务

总结:

以上脚本只是一个超简单简陋的版本,还有很多需要改进的地方,希望大家一起多多交流,一起进步。

如果觉得《Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。