shell脚本定时自动备份mysql数据库和mysql恢复数据

1、设置一些测试的数据

创建一个database,一些tables和一些数据

create database test_bom default charset utf8 collate utf8_general_ci;

use test_bom;

create table users(
id int not null primary key auto_increment,
name varchar(64) not null,
password char(64) not null,
email varchar(64) not null,
age tinyint,
salary decimal(10,2),
ctime datetime
)default charset=utf8;

Insert into users(name,password,email,age,salary,ctime) values("小五","123456","xiaowu
@126.com",24,5023.56,"2011-11-11 12:00:01");
Insert into users(name,password,email,age,salary,ctime) values("小六","123456","xiaowu
@126.com",24,5023.56,"2011-11-11 12:00:01");
Insert into users(name,password,email,age,salary,ctime) values("小七","123456","xiaowu
@126.com",24,5023.56,"2011-11-11 12:00:01");
Insert into users(name,password,email,age,salary,ctime) values("小八","123456","xiaowu
@126.com",24,5023.56,"2011-11-11 12:00:01");
Insert into users(name,password,email,age,salary,ctime) values("小九","123456","xiaowu
@126.com",24,5023.56,"2011-11-11 12:00:01");

2、创建一些必要的文件夹

存放备份的文件和shell脚本,以后所有的shell脚本可以统一存放和管理

我在/data目录下新建了俩个文件夹

mkdir my_shell
mkdir mysqlbackup

3、使用mysqldump备份数据

执行以下语句,将test_bom这个database的数据备份到制定目录下,并且起名mydb.sql

mysqldump -uroot -p test_bom > /data/mysqlbackup/mydb.sql

相应目录下能看到这个文件啦,说明语句没问题啦~

给大家看一下备份的sql里都有什么,有生成表的语句和表中数据的生成语句,也就是说,恢复数据的时候,我们需要手动创建database,然后执行这个备份文件就可以自动生成表和数据了。

4、写一个简单的脚本自动执行备份

先给自己的备份文件起一个带时间的名字,利用

date +%Y-%m-%d_%H-%M-%S

与之前的语句结合一下,我们就能生成带有日期的备份数据了

mysqldump -uroot -p test_bom > /data/mysqlbackup/mydb-$(date +%Y-%m-%d_%H-%M-%S).sql

如果你服务器是免密登录的,你可以不写-p哦

mysqldump -uroot test_bom > /data/mysqlbackup/mydb-$(date +%Y-%m-%d_%H-%M-%S).sql

编写shell脚本

#!/bin/bash

mysqldump -uroot test_bom > /data/mysqlbackup/mydb-$(date +%Y-%m-%d_%H-%M-%S).sql

给你的脚本授权

chmod 777 mysqlback_shell.sh

执行脚本

bash mysqlback_shell.sh 

查看是否生成了新的备份文件

如果备份文件太多,就太占地方了,我们一般会备份成压缩文件,会小不少

mysqldump -uroot test_bom |gzip> /data/mysqlbackup/mydb-$(date +%Y-%m-%d_%H-%M-%S).sql.gz

5、设置自动执行备份

使用crontab命令

编辑

crontab -e

在尾部添加,测试一下是否可以正常执行,这样写相当于每分钟执行一次,写完保存,等一会看看是否正常执行了。

* * * * * /bin/bash /data/my_shell/mysqlback_shell.sh

重新编辑crontab,设置每天晚上9:30执行

6、补充crontab的设置(可以跳过这个部分)

基本配置

如下所示配置共6列,前5列是关于执行时间配置,最后1列是具体执行命令。

.---------------- 分 (0 - 59)
|  .------------- 时 (0 - 23)
|  |  .---------- 日 (1 - 31) 
|  |  |  .------- 月 (1 - 12) 
|  |  |  |  .---- 星期 (0 - 6) (星期日可为0或7) 
|  |  |  |  | 
*  *  *  *  * 执行的命令

第一列单位为分,表示每时第几分钟,范围为0-59;
第二列单位为时,表示每天第几小时,范围为0-23;
第三列单位为日,表示每月第几天,范围为1-31;
第四列单位为月,表示每年第几月,范围为1-12;
第五列单位为星期,表示每星期第几天,范围0-7,0与7表示星期日,其他分别为星期1-6;

时间配置段类型

根据时间列中值的不同设置方式,编者总结出以下五种类型:

固定某值,指定固定值,如指定1月1日0时0分执行任务

0 0 1 1 * command

月日时分都指定了固定数值。
注:*在crontab中表示任意值都满足条件。

列表值,时间值是一个列表,如指定一个月内2、12、22日零时执行任务

0 0 2,12,22 * * command

上述日指定多个值,2号、12号和22号,以逗号分隔;

连续范围值,时间为连续范围的值,如指定每个月1至7号零时执行任务

0 0 1-7 * * command

上述日期为连续范围的值1-7时

步长值,根据指定数值跳跃步长确定执行时间,如指定凌晨1时开始每割3个小时0分执行一次任务

0 1-24/3 * * * command

上述指定从凌晨1时每3个小时执行任务,如1点0分,4点0分,7点0分等。

混合值,支持以上类型的组合,如指定每小时0至10分,22、33分以及0-60分钟每隔20分钟执行任务,如下

0-10,22,33,*/20 * * * * command

这里的分钟值采取了多种类型组合指定,包括连续范围值(0-7),列表值(22,33),步长值(*/20)。

说明:这几种时间配置类型是编者自己总结,希望能帮助大家更好理解。

定时语句解析工具

工具地址:https://crontab.guru,下面是工具的截图,可以用来测试自己写的对不对哦~

7、用备份的脚本恢复数据

删除之前的database

drop database test_bom;

第一步:创建database,这个database里面是没有表和数据的。

create database test_bom default charset utf8 collate utf8_general_ci;

第二步:执行语句,用最新的备份恢复

gunzip < /data/mysqlbackup/mydb-2023-12-14_09-26-01.sql.gz | mysql -uroot test_bom

再去数据库中查询,数据恢复啦~

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

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

相关文章

通俗易懂:插入排序算法全解析(C++)

插入排序算法是一种简单直观的排序算法&#xff0c;它的原理就像我们玩扑克牌时整理手中的牌一样。下面我将用通俗易懂的方式来解释插入排序算法的工作原理。 假设我们手上有一副无序的扑克牌&#xff0c;我们的目标是将它们从小到大排列起来。插入排序算法的思想是&#xff0…

web实习三_JavaScript编程

编写 JavaScript 程序实现 输出“九九乘法表”&#xff08; 左下三角形形式 &#xff09;。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

qiankun中子系统变化透传到主系统调用主系统方法

1、首先在主系统中qiankun启动前把变动的参数初始化 2、初始化之后就可以通过全局状态通信把参数透传为全局 3、在微应用子系统main.js的qiankun的mount中获取到全局设备参数属性并是设置为子系统全局 4、在微应用子系统中需要去调主系统方法时就在那个地方改变透传过来的参数 …

如何性能测试中进行业务验证?

在性能测试过程中&#xff0c;验证HTTP code和响应业务code码是比较基础的&#xff0c;但是在一些业务中&#xff0c;这些参数并不能保证接口正常响应了&#xff0c;很可能返回了错误信息&#xff0c;所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务…

ros2+在Ubuntu上安装gazebo

Binary Installation on Ubuntu(Ubuntu上binary方式安装gazebo) Harmonic binaries are provided for Ubuntu Jammy (22.04) and Ubuntu 24.04 (when its released). &#xff08;在Ubuntu22.04或者24.04上都是安装Harmonic版本的gazebo&#xff09;The Harmonic binaries are…

issue unit

The Issue Unit issue queue用来hold住&#xff0c;已经dispatched&#xff0c;但是还没有执行的uops&#xff1b; 当一条uop的所有的operands已经ready之后&#xff0c;request请求会被拉起来&#xff1b;然后issue select logic将会从request bit 1的slot中&#xff0c;选择…

指令寻址(顺序寻址和跳跃寻址)

目录 一. 顺序寻址1.1 定长指令字结构1.2 变长指令字结构 二. 跳跃寻址 \quad 指令寻址:如何确定下一条指令的存放地址? \quad 一. 顺序寻址 \quad 1.1 定长指令字结构 \quad 主存按字编址 \quad 按字节编址 1.2 变长指令字结构 \quad 同种颜色代表一条指令 由于无法判断当前…

制衣厂生产ERP系统怎么样?制衣厂生产ERP软件哪个好

有很多的制衣厂在订单处理、物料、仓储、销售、仓储、物料编码、车间成本核算、计件工资核算等方面还存在不少改进空间。 而经过多年的发展&#xff0c;现如今制衣行业的竞争比较激烈&#xff0c;如何提升各业务部门协同效率&#xff0c;减少车间物料损耗&#xff0c;简化生产…

idea的快捷键

1.调整字体的大小 文件夹的循序:setting-Editor-Font 界面: 2.删除当前行 文件夹的循序:setting-Keymap-DeleteLine 界面: 3.导入该行需要的类 文件夹的循序:setting-Editor-General-Auto import 界面: 4.格式化代码 文件夹的循序:setting-keymap-Reformat 界面: 5.快速…

【MySQL】——数据类型及字符集

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

loki 如何格式化日志

部署 grafana-loki 首先介绍一下如何部署 官方文档&#xff1a;部署 grafana-loki 部署命令 设置集群的存储类&#xff0c;如果有默认可以不设置设置命名空间 helm install loki oci://registry-1.docker.io/bitnamicharts/grafana-loki --set global.storageClasslocal -n …

程序员退一步的海阔天空,是考公还是烤冷面?

打败一个志向坚定的程序员只需要一个简单的年龄危机、身体预警.......钱难挣、屎难吃。996的钱更是伤身体&#xff0c;或者是被裁员、劝退的无力。算了~这份工作也不是非要不可&#xff0c;劳资不干了&#xff01;&#xff08;hahahahaha....bushi)人生在世&#xff0c;进可攻、…

Soul 推出“SoulX”AI人工智能模型,已应用于旗下 App“苟蛋”AI聊天机器人

Soul社交平台最近发布了名为”SoulX“的AI人工智能模型&#xff0c;SoulX将作为Soul “AIGC社交”布局的重要基建&#xff0c;具备prompt驱动、条件可控生成、上下文理解、多模态理解等能力&#xff0c;垂直应用于平台上多元社交互动场景&#xff0c;如智能对话机器人、AI辅助聊…

模拟微信、QQ、支付宝那样的随机红包

随机拆分给定金额为给定个数红包&#xff0c;像微信、QQ、支付宝随机红包那种&#xff0c;要求红包总金额绝对与给定金额相等。 (笔记模板由python脚本于2023年12月14日 12:37:58创建&#xff0c;本篇笔记适合熟悉Python随机数模块random的整型随机方法randint&#xff0c;能熟…

卫浴企业做网站的效果如何

卫浴产品无论工程还是家庭中都有较高需求度&#xff0c;相关品牌或经销商也不少&#xff0c;然而在实际经营中&#xff0c;卫浴品牌商家也面临着一些痛点&#xff1a; 1、品牌宣传拓客难 卫浴产品并不缺客户&#xff0c;但大小品牌众多&#xff0c;商家想要突围绝非易事&…

国产数据库适配-人大金仓(kingbase V8R3)

金仓数据库是基于POSTGRE_SQL 参考资料 国产数据库人大金仓踩坑记录和函数适配_金仓数据库关系不存在-CSDN博客 Springboot工程 适配人大金仓 kingbase V8R3 引入驱动包和方言包 hibernate-5.2.17.Finaldialect.jar kingbase8-8.2.0.jar application.yml文件 driver-cla…

计算机网络安全原理习题参考答案

1.9习题 一、单项选择题 1. ISO 7498-2从体系结构的角度描述了5种可选的安全服务&#xff0c;以下不属于这5种安全服务的是&#xff08;  D  &#xff09; A. 数据完整性   B. 身份鉴别   C. 授权控制   D. 数据报过滤 2. ISO 7498-2描述了8种特定的安全机制&…

破局创新,天翼云HBlock如何以小见大、以柔克刚?

引言&#xff1a;另辟蹊径开拓创新 不走传统存储厂商的“寻常路” 【全球存储观察 &#xff5c; 科技热点关注】 在分布式块存储领域&#xff0c;大部分厂商的安装软件套件大小都在GB级。然而&#xff0c;天翼云破天荒地将存储资源盘活系统HBlock的软件安装包浓缩到了170MB&a…

SFP3006-ASEMI大电流快恢复二极管SFP3006

编辑&#xff1a;ll SFP3006-ASEMI大电流快恢复二极管SFP3006 型号&#xff1a;SFP3006 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 最大平均正向电流&#xff1a;30A 最大重复峰值反向电压&#xff1a;600V 产品引线数量&#xff1a;3 产品内部芯片个数&#xff1…

【前端学习记录】记一次分片上传逻辑的调试过程

前言 在项目开发的过程中&#xff0c;经常会遇到上传和下载&#xff0c;对于上传来说&#xff0c;如果是小文件的话&#xff0c;接口响应会比较快&#xff0c;但是对于大文件&#xff0c;则需要对其分片以减少请求体的大小和上传时间。 小文件上传 以Vue框架使用<el-uplo…