mysql数据库:使用 bash脚本 + 定时任务 自动备份数据

mysql数据库:使用 bash脚本 + 定时任务 自动备份数据

  • 1、前言
  • 2、为什么需要自动化备份?
  • 3、编写备份脚本
  • 4、备份脚本授权
  • 5、添加定时任务
  • 6、重启 crond / 检查 crond 服务状态
  • 7、备份文件检查


💖The Begin💖点点关注,收藏不迷路💖

在这里插入图片描述

1、前言

在日常的系统管理工作中,数据库的备份是至关重要的一环。针对 MySQL 数据库的备份,我们可以编写 Bash 脚本来实现自动化备份操作,从而简化数据库管理的流程,保障数据的安全性和可靠性。

2、为什么需要自动化备份?

数据库作为应用程序的核心数据存储,包含了大量的重要信息,例如用户数据、配置信息等。一旦数据库出现意外故障或数据丢失,可能会给业务带来严重影响甚至损失。因此,定期进行数据库备份并保证备份文件的安全存储是非常重要的。

手动备份存在诸多弊端,例如容易出现疏忽、不及时等问题,因此自动化备份成为了一个更好的选择。通过编写脚本实现自动备份,可以提高效率、减少人为错误,同时也能够更好地保障数据的安全。

3、编写备份脚本

创建备份数据保存目录和bash脚本保存目录。

在 /mysql/backup 目录下创建一个名为 data 的子目录,用于保存备份数据;

在同一目录下创建一个名为 bash 的子目录,用于保存 bash 脚本文件。


mkdir /mysql/backup/data 

mkdir /mysql/backup/bash 

在这里插入图片描述

cd 到/mysql/backup/bash ,vi 编写备份脚本,如vi backup_mysql.sh

在这里插入图片描述

添加下面内容:

#!/bin/bash

# 定义数据库连接参数
db_host="192.168.234.10" # 数据库IP地址
db_port="3306"          # 数据库端口
db_user="root"          # 数据库登陆用户名
db_passwd="zyl@2024"      # 数据库登录密码

# 定义备份相关参数
db_name="db_zyl"                          # 需备份的库
backup_path="/mysql/backup/data"        # 备份文件存放路径,前面创建的目录
name="db_zyl-$(date +"%Y-%m-%d-%H:%M:%S")" # 定义备份文件的文件名格式

# 执行备份命令,并压缩备份文件
mysqldump --flush-logs --user=$db_user --password=$db_passwd --host=$db_host --port=$db_port $db_name | gzip > $backup_path/$name.sql.gz

# 备份文件传输至指定服务器(可选,如本机:192.168.234.10拷贝到192.168.234.20)
scp -r $backup_path/$name.sql.gz root@192.168.234.20:$backup_path

# 删除7天前的备份
find $backup_path/* -mtime +7 -name "*.gz" -exec rm -rf {} \;

在这里插入图片描述

4、备份脚本授权

在添加定时任务之前,需要确保脚本已经有可执行权限。可以使用chmod +x 备份脚本 命令赋予脚本可执行权限。

chmod +x /mysql/backup/bash/backup_mysql.sh

在这里插入图片描述

5、添加定时任务

拓展:

当设置定时任务时,可以使用以下格式来详细定义时间:

* * * * *  执行脚本绝对路径
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天可以用0或7表示)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)


通过这五个字段的组合,可以精确地定义定时任务执行的时间。例如:

30 2 * 1-5        表示在周一到周五的凌晨230分执行任务。
0 20 * * 1,3,5    表示在周一、周三、周五的晚上8点执行任务。
0 * * * *         表示每小时执行一次任务。
0 3 * * *         表示每天凌晨3点执行任务。
0 4 1 * *         表示每月的第一天凌晨4点执行任务。

根据具体的需求,可以灵活地调整定时任务的时间设置。

为脚本添加定时任务可以实现自动备份,以下是添加定时任务的步骤:

打开终端窗口,输入crontab -e命令,编辑当前用户的定时任务配置文件。

crontab -e

在文件中添加如下一行,注意是脚本的绝对路径,表示每天凌晨3点执行备份:

0 3 * * * /mysql/backup/bash/backup_mysql.sh

在这里插入图片描述

6、重启 crond / 检查 crond 服务状态

#重启 
systemctl restart crond

#服务状态查看
systemctl status crond

在这里插入图片描述

7、备份文件检查

在这里插入图片描述

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter学习笔记---flutter环境搭建以及dart语法的学习

Flutter笔记 Flutter环境搭建 获取 Dart SDK | Dart dart-pub | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror Flutter、Dart SDK镜像资源 - 掘金 (juejin.cn) Index of /flutter/dart-archive/channels/stable/release/3.2.6/sdk/ | 清华大学…

在webapp中手动发布一个应用

目录 第一步找到wedapps文件 第二步在wedapps文件自定义创建一个文件夹 第三步在自定义的文件夹里写一个HTMl文件 第四步进bin文件找到startup打开服务器​编辑 第五步打开浏览器输入网址http://localhost:8080//demoApp//index.htmlhttp://localhost:8080//文件和后缀名 第…

微信每天通过好友上限是多少个呢?

微信每天通过好友上限是多少个呢? 1、新号和不活跃的号 微信新号是指注册不满15十五天,或者注册超过15天,但是没有好好养号的的账号。(包括很多长期不活跃的账号,突然使用的情况) 2、正常帐号 &#xf…

ABAP-SE16N查询底表使用自己的布局

ABAP-SE16N查询底表使用自己的布局 调整好列的位置和顺序之后,可以保存自己的布局,点击“布局”按钮,点击“保存布局”: 特定于用户:是只对自己有效 缺省:会影响所有用户 在代码里面是这样的:…

Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法

文章目录 在Flutter中记录和使用全局状态使用 Provider步骤1步骤2步骤3 使用 BLoC步骤1步骤2步骤3 使用 GetX:步骤1步骤2步骤3 在Flutter中记录和使用全局状态 在 Flutter 应用中,您可以使用以下几种方法来实现记录和使用全局状态,并在整个应…

java中的String

(1)创建字符串对象 //方式1 String str "abc"; //方式2 String str new String("abc"); 方式1表示:在字符串常量池(String Pool)中先寻找值为 “abc” 的内存地址,如果找不到&…

AI程序员Devin会在6个方面影响人类程序员

讲动人的故事,写懂人的代码 初创公司Cognition最近所发布的世界上首个AI程序员Devin,让人类程序员百感交集。因为Devin能自动干下面的事情: 自己学习不熟悉的技术; 端到端地自己搭建和部署应用程序; 自己找出并修复…

【数据结构】单向链表的创建及4种应用

目录 前言 自定义“单向”链表类 1. 自定义一个链表类,并完成“初始化链表”、“添加元素(头插法/尾插法)”、“计算链表长度”操作; 自定义链表 向链表中插入元素(头插法) 向链表中插入元素&#xf…

D-阿洛酮糖-DAEase酶固定化载体及混合糖液分离

#D-阿洛酮糖-DAEase酶固定化载体及混合糖液分离 ​阿洛酮糖为白色固体晶体,无气味,具有较大的溶解度,柔和的口感,其具有传统甜味剂蔗糖70%的甜度,却几乎不提供任何热量。其与食物中的蛋白质,如鸡蛋蛋白发生…

使用SpaceDesk实现iPad成为电脑拓展屏(保姆级教程)

使用SpaceDesk实现iPad成为电脑拓展屏 SpaceDesk是一个开源的软件, 所以说对学生和平民用户非常的友好, 连接后的画质也非常不错, 而且具有无线和有线两种连接方式. 接下来就开始教程: 1. 安装SpaceDesk电脑版 首先我们要下载SpaceDesk电脑版安装好: SpaceDesk官网 注意: …

Unity PS5开发 天坑篇 之 DEVKit环境部署与系统升级02

上一篇各位大神们已经收到了SONY官方免费寄送的PS5开发机与测试机,恭喜大家成为SONY的开发者, 本篇继续PS5开发机的部署与开发套件使用。 一, PC安装PS5 SDK与系统升级 1. PC/PS5 SDK Manager下载安装包 登录开发者账号后,Development->Resources&a…

深入浅出:Python中的JSON操作和最佳实践

深入浅出:Python中的JSON操作和最佳实践 引言Python中处理JSON的基础读取JSON数据示例: 将Python对象转换为JSON格式示例: 进阶使用技巧高级参数的使用示例: 处理复杂对象:自定义编码器示例: 解析复杂JSON数…

C语言——动态内存分配

前言:通过前面的学习,我们知道C语言中在内存中开辟空间的方法有:变量和数组。既然拥有了开辟空间的方法,我们为什么还要学习动态内存分配呢? int val 20; //在内存中开辟四个字节的空间 int arr[10] { 0 }; //在内…

vue3速查笔记

文章目录 一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建 二、常用 Composition API1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3.0的响应式 5.reactive对比ref6.setup的两个注意点7.计算属性与监视1.computed函数2.watch函数3…

加入波卡去中心化未来计划,申请高达 2000 万美金和 500 万 DOT 激励!

在努力推进去中心化的旅途中,2023 年 11 月 16 日成为了一个标志性的日子。Web3 基金会 —— 一个在区块链技术和去中心化应用发展前沿不断探索和推动的组织,正式宣布推出去中心化未来(Decentralized Futures)计划,同时…

凝思操作系统离线安装mysql和node

PS:下面这就是国产凝思的界面,测试版本是V6.0.80,第一次听说这种系统,于是去官网下载部署包,下面是地址 注意:这个系统如果没有激活,ip都不会有,这样文件都不能传到服务器,xshell这些工具都连不…

redis的RDB和AOF持久化配置

RDB 持久化相关配置 Redis内部的触发RDB的机制,格式如下: # 900秒内,如果至少有1个key被修改,则执行bgsave , 如果是save "" 则表示禁用RDB save 900 1 save 300 10 save 60 10000 RDB的其它配置也可以…

“数据要素市场行业数智化实践系列沙龙”活动预告

在数据要素大背景下,随着最新的政策发布,有哪些行业红利和机会?目前行业数据应用现状如何?上海数商协会联合蚂蚁集团、上海数据交易所,打造了行业数智化实践课程,面向数商协会成员及数据要素从业人员&#…

景联文科技:提供通用多模态数据,助力AI多模态领域实现飞跃式发展

回顾2023年,以ChatGPT为代表的通用人工智能大模型在全球范围内掀起了新一轮人工智能产业发展浪潮,我国人工智能大模型市场呈现百“模”争鸣、日新月异的迅猛发展态势。 根据大模型之家、钛媒体数据,2023年中国大模型市场规模达到147亿人民币&…

Matlab|计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略

目录 主要内容 部分代码 结果一览 下载链接 主要内容 程序建立了多主体综合能源模型,采用双层模型进行求解,上层用自适应粒子群算法求解出各能源售价和需求响应补偿价格;下层采用混合整数规划算法求解出三个园区、配电网、储能…