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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本

引言:


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

脚本:

[root@localhost ~]# vim mysqlbackup.sh
#!/bin/bash
date=`date +%Y%m%d`
backuppath=/root/backup
dbhost=192.168.2.161
dbuser=root
dbpasswd=123456
db=test
if [ ! -d $backuppath ] ;then
 mkdir /root/backup && echo "备份目录创建成功!" 
else
 echo "备份目录已存在!"
fi
cd $backuppath
mkdir -p $date
cd $date
mysqldump  -h$dbhost -u$dbuser -p$dbpasswd $db > $date.sql
find $backuppath  -type d -mtime +7 -exec rm -rf {} \;

1.创建脚本变量

date=`date +%Y%m%d`
backuppath=/root/backup
dbhost=192.168.2.161
dbuser=root
dbpasswd=123456
db=test

注:


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


  • date=date +%Y%m%d       //其中"date"与"+"之间必须有个空格,否则语法错误


  • backupath=/root/backup    //创建备份文件目录


  • dbhost=192.168.2.161   //数据库主机IP


  • dbuser=root   //数据库用户


  • dbpasswd=123456  //数据库密码


  • db=test     //数据库库名


2.创建备份目录

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

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


3.创建当天备份目录

cd $backuppath
mkdir -p $date
cd $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 Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2020-03-23 08:56:54 CST; 2 days ago
[root@localhost ~]# crontab -e
 0 21 * * * /root/mysqlbackup.sh     //每天22点执行备份脚本,可自行调整时间
[root@localhost ~]# systemctl restart crond   //重启crond服务

总结:


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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
12
分享
相关文章
Linux下mysql数据库的导入与导出以及查看端口
本文详细介绍了在Linux下如何导入和导出MySQL数据库,以及查看MySQL运行端口的方法。通过这些操作,用户可以轻松进行数据库的备份与恢复,以及确认MySQL服务的运行状态和端口。掌握这些技能,对于日常数据库管理和维护非常重要。
170 8
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
269 7
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
105 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
194 42
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
150 25
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等