MySQL数据库备份脚本(mysqldump)

数据库备份脚本

以下shell脚本的主要目的是备份数据库,并在需要时删除旧的备份文件以节省空间。它使用 mysqldump 命令来执行数据库备份,将备份文件存储在指定的路径下,并根据文件数量的阈值来删除旧的备份文件。扫描文章末尾二维码关注公众号回复04可获取此脚本

#!/bin/bash# 定义脚本名称、日期、用户等信息
# NAME="数据库备份"
# DATE=$(date +%Y-%m-%d-%H-%M)
# USER="***"# 设置本机数据库登录信息
mysql_user="user"
mysql_password="passwd"
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8mb4"# 获取当前日期和时间,并赋值给 date_time 变量
date_time=$(date +%Y-%m-%d-%H-%M)# 保存目录中的文件个数
count=10# 备份路径
path=/***/# 备份数据库 sql 文件并指定目录
mysqldump --all-databases --single-transaction --flush-logs --master-data=2 -h$mysql_host -u$mysql_user -p$mysql_password > $path_$(date +%Y%m%d_%H:%M).sql# 检查上一行命令的返回值,如果不等于 0,则输出备份失败的消息并退出脚本
[ $? -ne 0 ] && echo "-----------------数据备份失败-----------------" && exit 1# 列出指定路径下的备份文件,并通过 awk 提取最新的文件名赋值给 delfile 变量
delfile=$(ls -l -crt $path/*.sql | awk '{print $9 }' | head -1)# 通过 wc -l 统计指定路径下的备份文件数量,并赋值给 number 变量
number=$(ls -l -crt $path/*.sql | awk '{print $9 }' | wc -l)# 判断现在的备份数量是否大于阈值
if [ $number -gt $count ]
then# 删除最早的备份文件rm $delfile# 更新删除文件日志echo "-----------------已删除过去备份 sql $delfile-----------------"
fi

这段脚本是一个用于数据库备份的 Bash 脚本。它包含了以下主要功能:

  1. 设置数据库连接信息:定义了数据库用户名、密码、主机、端口和字符集。
  2. 获取当前日期和时间:使用 date 命令获取当前日期和时间,并将其存储在变量 date_time 中。
  3. 指定备份路径和文件计数:定义了备份文件的保存目录和要保留的备份文件数量。
  4. 执行数据库备份:使用 mysqldump 命令执行数据库备份,并将备份文件保存到指定的路径,文件名中包含当前日期和时间。
  5. 检查备份是否成功:通过检查$?变量的返回值(0 表示成功,非 0 表示失败),输出备份成功或失败的消息。
  6. 查找要删除的备份文件:使用 ls 命令列出备份目录中的所有备份文件,并使用 awk 命令提取文件名。
  7. 判断备份文件数量是否超过阈值:计算目录中备份文件的数量,并与阈值进行比较。
  8. 删除最早的备份文件:如果备份文件数量超过阈值,使用 rm 命令删除最早的备份文件,并输出删除文件的日志消息。

请注意,在运行这个脚本之前,你需要确保满足以下条件:

  1. 你有适当的权限来执行 mysqldump 命令和对备份目录进行读写操作。
  2. 你已经安装了 mysqldump 工具,并且可以通过命令行执行。
  3. 你已经设置了正确的数据库连接信息(用户名、密码、主机、端口等)。
  4. 备份目录和文件名路径是存在且可写的。

根据你的实际环境和需求,你可能需要对这些变量和命令进行适当的调整和验证。在测试和运行脚本之前,建议你仔细检查和理解每一行代码的功能和影响。


更多精彩文章可扫码关注公主号查看:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debug OpenBLAS library 和 应用示例

1. 构建openblas lib git clone gitgithub.com:OpenMathLib/OpenBLAS.git cd OpenBLAS/ 如果要安装在自定义文件夹中,可以修改 PREFIX 的定义: 将 PREFIX /opt/OpenBLAS 修改成 PREFIX ../local/ 然后构建: make -j make install 如果要…

基于filter的内存马

主要是通过过滤器来拦截severlet请求中的参数,作为过滤器中的参数,来调用自定义过滤器中的恶意函数 在这里我们分析一下filter的实现原理,循序渐进 Demo1: 直接使用filter模拟内存马效果: 1.配置一个简单的severlet的…

推荐VSCODE插件:为`package.json`添加注释信息

众所周知,JSON文件是不支持注释的,除了JSON5/JSONC之外,我们在开发项目特别是前端项目时,大量会用到JSON文件,特别是在编写package.json中的scripts时,由于缺少注释,当有大量的命令脚本时,就有了…

给自己创建的GPTs添加Action(查天气)

前言 在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。 GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。 如果调用官方的GPT4接口&…

Qt中QGraphicsView总体架构学习

前沿 前段时间学习了下如何在QGraphicsView架构中绘制刻度尺,主要是与OnPainter中进行比较的,那么今天就来详细讲解下我对QGraphicsView框架的认知吧~ 最近一段时间想学习下,如果我有不正确的,欢迎留言探讨哟~ QGraphicsView架…

[软件工具]AI软件离线表格识别工具使用教程图像转excel转表格可复制文字表格导出实时截图识别成表格

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR.git 【算法介绍】 PaddleOCR是一个基于PaddlePaddle框架的开源光学字符识别(OCR)工具库,由百度公司开发。它提供了一套完整的OCR解决方案,包括文字检测、文字识别以…

使用 Apache PDFBox 操作PDF文件

简介 Apache PDFBox库是一个开源的Java工具,专门用于处理PDF文档。它允许用户创建全新的PDF文件,编辑现有的PDF文档,以及从PDF文件中提取内容。此外,Apache PDFBox还提供了一些命令行实用工具。 Apache PDFBox提供了创建、渲染、…

linux环境安装docker

一、Docker是什么? 当我们开发一个应用程序时,通常需要配置和安装各种软件、库和依赖项。而这些环境配置可能会因为不同的操作系统或版本而存在差异,导致应用在不同环境中运行出现问题。 Docker就像是一个集装箱,可以将应用程序及其所有依…

Java EE 博客系统(Servlet版)

文章目录 1. 基本情况2. 准备工作3. 博客列表页4. 博客详情页5. 实现登录6. 强制要求登录7. 显示用户信息8. 退出登录9. 发布博客10. 如果程序出现问题怎么办? 1. 基本情况 这里的博客系统主要是四个界面 博客列表页 显示出当前网站上都有哪些博客博客详情页 点击…

浅析ARMv8体系结构:A64指令集

文章目录 A64指令编码格式加载与存储指令寻址模式变基模式前变基模式后变基模式 PC相对地址模式 伪指令加载与存储指令的变种不同位宽的加载与存储指令多字节内存加载和存储指令基地址偏移量模式前变基模式后变基模式 跳转指令返回指令比较并跳转指令 其它指令内存独占访问指令…

面试题:MySQL误删表数据,如何快速恢复丢失的数据?

相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来。 如果身边有BDA或者有这方面经…

Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github

博客原文 文章目录 k8s 集群配置介绍Admission WebhookWebHook 入门实践: github 认证接入web 服务器Dockerfile 镜像制作amd64x86_64构造镜像检验镜像 Makefilewebhook 接入 apiserverwebhook.yamlapiserver 挂载 webconfig在 github 中创建认证 token将 token 添加到 kubecon…

AI绘画:Midjournety的使用体验

今天的时间少,没有给大家做一些教程,就单纯分享使用体验,还不错,体验感很好。 后需如果有需要,我可以出一些教程类的视频。 下面是一组复刻fated的saber的一组提示词,效果相当不错。我后续会分享一些学习经…

ai电话呼叫系统的功能有哪些,能帮到我们什么?呼叫系统

人工智能产品的研发,是为了帮助企业更好的生存,更好的利润放大,而不是用于不正规的工作,现在的电话呼叫中心软件让企业员工从简单重复的工作中得以解放,那电话呼叫系统的强大功能有哪些? 知识自学习&#x…

目标检测-One Stage-YOLOx

文章目录 前言一、YOLOx的网络结构和流程1.YOLOx的不同版本2.Yolox-Darknet53YOLOv3 baselineYolox-Darknet53 3.Yolox-s/Yolox-m/Yolox-l/Yolox-x4.Yolox-Nano/Yolox-Tiny 二、YOLOx的创新点总结 前言 根据前文CenterNet、YOLOv4等可以看出学界和工业界都在积极探索使用各种t…

【Proteus仿真】【Arduino单片机】汽车车窗除霜系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602显示模块、光线传感器、DS18B20温度传感器、PCF8691 ADC模块、继电器加热模块等。 主要功能: 系统运行后,LCD…

Linux系统与windows系统设置定时任务的具体操作方法,如数据库自动备份等

设置定时备份 要设置数据库定时备份,你可以使用操作系统的定时任务功能来自动执行 backup.sh 脚本(此脚本可关注文末公众号回复04获取)。不同的操作系统有不同的方法来设置定时任务,但一般来说,你可以按照以下步骤进行操作: 打开…

python_selenium零基础爬虫学习案例_知网文献信息

案例最终效果说明: 去做这个案例的话是因为看到那个博主的分享,最后通过努力,我基本实现了进行主题、关键词、更新时间的三个筛选条件去获取数据,并且遍历数据将其导出到一个CSV文件中,代码是很简单的,没有…

.NET Framework 与 .NET Core 与 .NET Standard 之间的差异

介绍 在本文中,我们将探讨 .NET Framework、.NET Core 和 .NET Standard 之间的差异。 .NET Framework 与 .NET Core .NET框架.NET核心 历史 .NET Framework 是 .NET 的第一个实现。 .NET Core 是 .NET 的最新实现。 开源 .NET Framework 的某些组件是开源的。 .N…

【python可视化大屏】使用python实现可拖拽数据可视化大屏

介绍: 我在前几期分享了关于爬取weibo评论的爬虫,同时也分享了如何去进行数据可视化的操作。但是之前的可视化都是单独的,没有办法在一个界面上展示的。这样一来呢,大家在看的时候其实是很不方便的,就是没有办法一目了…