代码编织梦想

Linux利用定时任务自动备份数据库

一、在实际生产环境中遇到需要备份数据库,防止服务器或数据库崩溃数据损坏时,无法挽救的情况,一种情况我们可以部署MySQL主主互备来备份数据库,在机器资源不足以我们部署MySQL主主互备,又不能采取以人工手动定时备份数据库这种繁琐的操作时,我们可以利用Linux的定时任务crontab来自动的备份数据库

1、我们先来看我们的需求,比如现在需要在每天晚上的1点30分自动备份MySQL数据库中的名字为mysql的库到一个指定的目录,比如root目录下的mysql_backup文件夹,那么备份命令就是下面这样

/usr/bin/mysqldump -uUsername -pPassword mysql > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql

“Username”是我们数据库的用户

“Password”是这个用户的密码

“mysql”为我们需要备份的数据库中的某个数据库

因为我们每天晚上都会备份一下数据库,所以备份之后我们以当时的备份时间来命名备份文件,即为“mysql_$(date +%Y%m%d_%H%M%S).sql”,比如我2019年1月30号晚上1点30分整备份的数据库即为“mysql_20190130_013000.sql”。

2、我们的需求是在每天晚上都备份一下,那么每天都会生成一个文件,时间久了硬盘就会被塞满,而且很早之前的数据也没有太大的保留意义,那么我们可以在每天备份时同时删除一段时间之前的备份数据,比如我们需要删除30天之前的备份

find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f

“/root/mysql_backup/”为我们备份文件的保存目录

“-mtime +30”是设置时间为30天前

“-type f”表明查找的类型是文件

这行命令完成的操作是:查找/root/mysql_backup/目录下30天之前的文件并且删除。

3、备份跟删除的命令我们都写好了,那么我们可以通过crontab来让系统每天自动的去执行这两个任务

创建一个任务脚本mysql_autobackup.sh,写入我们刚才的两条命令并给于文件最高权限

#!/bin/bash
/usr/bin/mysqldump -uUsername -pPassword mysql > /root/mysql_backup/mysql_$(date +%Y%m%d_%H%M%S).sql
find /root/mysql_backup/ -mtime +30 -type f | xargs rm -f

crontab -e 写入计划任务并保存

30 01 * * * /root/mysql_autobackup.sh

表示每天晚上1点30分会执行root目录下的mysql_autobackup.sh脚本,就是我们上面编写的备份跟删除操作的脚本,这样就可以完成系统每天自动备份数据库并且会自动的去查找超过30天的备份并删除

二、crontab 的格式

1、以我们刚才写的计划任务为例

30 01 * * * /root/mysql_autobackup.sh

格式简化之后是下面这样

* * * * * *

第一列的“*”为分钟 从1~59

第二列的“*”为小时 从0~23,0代表午夜12点

第三列的“*”为日 从1~31

第四列的“*”为月 从1~12

第五列的“*”为星期 从0~6,0代表星期天

第六列的“*”为要运行的命令

综合起来就是下面的格式

分 时 日 月 星期 要运行的命令

2、举一些例子

30 21 * * * reboot
上面的例子表示每晚的21:30重启服务器。
45 4 1,10,22 * * reboot
上面的例子表示每月1、10、22号的4:45重启服务器
10 1 * * 6,0 reboot
上面的例子表示每周六、周日的1:10重启服务器
0,30 18-23 * * * reboot
上面的例子表示在每天18:00至23:00之间每隔30分钟重启服务器。
0 23-7/1 * * * reboot
晚上11点到早上7点之间,每隔一小时重启服务器

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_43708754/article/details/111076549

layui中table表格下checkbox保存状态赋值checkbox与禁止使用表头多选-爱代码爱编程

保存状态赋值 var checkedSet = new Set(); table.on('checkbox(dataguid1Table)', function(obj){                       console.log(obj.checked); //当前是否选中状态                       consol

面试官:简单说一下RocketMQ整合SpringBoot吧-爱代码爱编程

前言 在使用SpringBoot的starter集成包时,要特别注意版本。因为SpringBoot集成RocketMQ的starter依赖是由Spring社区提供的,目前正在快速迭代的过程当中,不同版本之间的差距非常大,甚至基础的底层对象都会经常有改动。例如如果使用rocketmq-spring-boot-starter:2.0.4版本开发的代码,升级到

如何使用VIPER构建iOS应用-爱代码爱编程

用VIPER构建iOS应用 为避免撕逼,提前声明:本文纯属翻译,仅仅是为了学习,加上水平有限,见谅! 【原文】https://www.objc.io/issues/13-architecture/singletons/ 用VIPER构建iOS应用 ——by Jeff Gilbert and Conrad Stoll 众所周知,在建筑领域,我们塑造我

2020-12-12-爱代码爱编程

  vlan多地址&接口配置 实现不同网段之间互通 一、pc1、pc2、pc3、pc4、server应用服务器、server运维服务器配置地址如上,网关为本网段最后一个地址,     二、CORE-SW配置vlan10及地址配置(标注:第一个地址为交换机主地址) <Huawei>sys     <Huawei&

《如何高效学习》思维导图-爱代码爱编程

《如何高效学习》 一丶概述 《如何高效学习》,微信读书综合评分8.6分 二丶思维导图整理 三丶微信读书热评 书中的干货: (一)整体性学习的概念: 整体性学习就是创建你心中的知识网络,描绘你心中的知识地图。这幅你知识网络图可以将知识与知识串联起来,加深你对知识点的理解,把单纯的记忆知识转化为理解知识驾驭知识。 (二)整体性学习的三个要素:

2020-12-12-爱代码爱编程

常见面试问题: java基础          jvm内存模型         对象生死模型         对象晋升   年龄阀值  动态棉铃判定         垃圾回收算法        jvm调优指令       OOM volitile synchronized lock java锁 java线程池       IO

面试阿里P6,却被MySQL难倒,二战阿里,挤进天猫团队(Java岗)-爱代码爱编程

爱因斯坦说过“耐心和恒心总会得到报酬的”,我也一直把这句话当做自己的座右铭,这句箴言在今年也彻底在我身上实现了。 每一个程序员都拥有一座大厂梦,我也不例外,去年面试阿里P6,竟然被MySQL问倒了,很多相关性的问题都没有答上来,才2面就凉凉了。回去之后也潜心复习了,准备了二战,如今终于进入了阿里,被天猫团队录用。 以下展示的阿里面试题(含答案)、学习资

mysql安装后未设置密码无法登录的问题Access denied for user ‘root‘@‘localhost‘-爱代码爱编程

记录在Ubuntu20.10上安装mysql的一次经历 我的做法流程: 注意安装前先更新一下软件源获得最新版本:sudo apt-get update # 更新软件源 安装mysqlsudo apt-get install mysql-server 由于安装的时候没有设置密码,所以导致无法登陆。按照网上的教程都是使用debian-sys-ma

c语言,单链表的基本操作-爱代码爱编程

c语言,单链表的基本操作 代码运行图 代码部分,每天分享习题源码,注释清晰,欢迎收藏,学习不迷路 #include <stdio.h> #include <stdlib.h> //创建数据 struct User { char name[20]; char pass[20]; char tel[20]; };

知乎4000赞,自学Java怎么入门?-爱代码爱编程

给你推荐一个写得非常用心的 Java 基础教程:教妹学 Java 入门基础教程 这个教程将 Java 的入门基础知识贯穿在一个故事中,逐步深入,可以帮助你快速进入 Java 编程的世界。万事开头难,逐步跟着这个教程走一遍,对 Java 应该就会有一种入门的感觉了。然后再去学习更高级的主题,或者更深入地学习其中的某些知识点。 第 1 课 什么是 Java

mongoose中findOneAndUpdate()方法-爱代码爱编程

// 执行修改操作 const task = await Task.findOneAndUpdate({_id: req.body._id}, _.pick(req.body, ['title', 'completed']),{new: true}) //findOneAndUpdate()默认返回原始的数据 //其中{_id: req.body._id}

搭建windows下简易的redis集群环境-爱代码爱编程

文章目录 简介一、下载`Redis for Windows`二、修改配置打开集群模式三、单机构建简单集群四、测试集群 简介 一、下载Redis for Windows 为了测试客户端代码,搭建一个基于Windows下简单的集群。 截至写本文的时候,最新的基于windows的Redis版本是:Redis-x64-5.0.10。Windows