springboot 定时任务备份mysql数据库
记录在Linux 系统上定时备份MySQL数据库
1、在代码中添加备份
package org.jeecg.modules.xczxhhr.job;import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
@Slf4j
public class SyncDatabaseBackupJob implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) {String mysqlUser = "root";String mysqlPassword = "你的密码";String dbname = "你的数据库名字";String backupDir = "备份文件存储地址";int expireDays = 15;String backupTime = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());String backupFileName = dbname + "-" + backupTime + ".sql";String[] command = new String[]{"mysqldump", "-u" + mysqlUser, "-B", dbname};ProcessBuilder processBuilder = new ProcessBuilder(command);processBuilder.environment().put("MYSQL_PWD", mysqlPassword);File backupFile = new File(backupDir, backupFileName);processBuilder.redirectOutput(backupFile);try {Process process = processBuilder.start();int exitStatus = process.waitFor();if (exitStatus == 0) {// 备份成功,可以继续实现删除过期备份的逻辑log.info("数据库备份成功");cleanupOldBackups(backupDir, expireDays);} else {// 备份失败,可以记录日志或者进行其他处理log.error("数据库备份失败:" + exitStatus);// 输出错误信息BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));String line;while ((line = errorReader.readLine()) != null) {log.error(line);}}} catch (IOException | InterruptedException e) {// 异常处理e.printStackTrace();log.error("备份数据库出现异常:" + e.getMessage());}}private void cleanupOldBackups(String backupDir, int expireDays) {File dir = new File(backupDir);File[] files = dir.listFiles();if (files != null) {for (File file : files) {long diffInMillies = System.currentTimeMillis() - file.lastModified();long diffInDays = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);if (diffInDays > expireDays) {if (file.delete()) {log.info("已删除旧备份文件:" + file.getName());} else {log.info("未能删除旧备份文件:"+ file.getName());}}}}}
}
2、也可以在Linux中执行备份脚本,backup_script.sh,内容如下:
#!/bin/bash
# 设置mysql的登录用户名和密码(根据实际情况填写)
mysqlUser="root"
mysqlPassword="密码"
dbname='数据库名字'# 备份文件存放地址(根据实际情况填写)
backup_dir=/data/depFile/bakdb# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d $backup_dir ]; thenmkdir -p $backup_dir
fi
#===================================
# 是否删除过期数据
expire_backup_delete="ON"
expire_days=15
backup_time=$(date +%Y%m%d%H%M)
welcome_msg="Welcome to use MySQL backup tools!"
#===========================================
# 备份指定数据库中数据(此处假设数据库是mysql_backup_test)
mysqldump -u$mysqlUser -p$mysqlPassword -B $dbname >$backup_dir/$dbname-$backup_time.sql#删除过期数据
if [ "$expire_backup_delete" == "ON" -a "$backup_dir" != "" ]; then# $(find $backup_dir/ -type f -mtime +$expire_days | xargs rm -rf)find $backup_dir/ -type f -mtime +$expire_days -exec rm -f {} \;echo "Expired backup data delete complete!"
fi
接下来,你需要设置一个定时任务,让这个脚本在每天凌晨一点执行。你可以使用 cron 来实现这一点。
首先,打开终端并输入以下命令来编辑 crontab 文件:
crontab -e
然后,在 crontab 文件中添加以下行来设置定时任务:
0 1 * * * /bin/bash /path/to/your/backup_script.sh
在这个例子中,/path/to/your/backup_script.sh 应该替换为你实际的备份脚本所在的路径。
保存并退出编辑器,这样就设置好了定时任务。这个任务将会在每天凌晨一点执行你的备份脚本
相关文章:
springboot 定时任务备份mysql数据库
记录在Linux 系统上定时备份MySQL数据库 1、在代码中添加备份 package org.jeecg.modules.xczxhhr.job;import lombok.extern.slf4j.Slf4j; import org.quartz.Job; import org.quartz.JobExecutionContext;import java.io.BufferedReader; import java.io.File; import java…...
PMP考试之20240301
1、在回顾项目团队最新的绩效报告时,项目经理注意到他们的产出出现了重大下降。项目经理决定: A.增加每个团队成员在截止日期前完成任务的压力 B.增加状态报告和团队评审会议的频率 C.为表现最好的团队成员提供特别奖励 D.改善和促进团队成员之间的信任和凝聚力…...
什么是MAC地址? win10电脑查看MAC地址的多种方法
您是否知道连接到家庭网络的每件硬件都有自己的身份?正如每个设备都分配有自己的 IP 地址一样,每个硬件都有一个唯一的网络标识符。 该标识符称为MAC 地址。MAC 代表媒体访问控制。您可能需要 MAC 地址来解决网络问题或配置新设备。在 Windows 中查找您…...
vue3中的基本语法
目录 基础素材 vue3的优化 使用CompositionAPI理由 1. reactive() 函数 2. ref() 函数 2.1. ref的使用 2.2. 在 reactive 对象中访问 ref 创建的响应式数据 3. isRef() 函数 4. toRefs() 函数 5. computed() 5.1. 通过 set()、get()方法创建一个可读可写的计算属性 …...
Timeplus-proton流处理器调研
概念 Timeplus是一个流处理器。它提供强大的端到端功能,利用开源流引擎Proton来帮助数据团队快速直观地处理流数据和历史数据,可供各种规模和行业的组织使用。它使数据工程师和平台工程师能够使用 SQL 释放流数据价值。 Timeplus 控制台可以轻松连接到不…...
H3C防火墙安全授权导入
一、防火墙授权概述 前面我们已经了解了一些防火墙的基本概念,有讲过防火墙除了一些基本功能,还有一些高级安全防护,但是这些功能需要另外独立授权,不影响基本使用。这里以H3C防火墙为例进行大概了解下。 正常情况下,防…...
使用 OpenCV 通过 SIFT 算法进行对象跟踪
本文介绍如何使用 SIFT 算法跟踪对象 在当今世界,当涉及到对象检测和跟踪时,深度学习模型是最常用的,但有时传统的计算机视觉技术也可能有效。在本文中,我将尝试使用 SIFT 算法创建一个对象跟踪器。 为什么人们会选择使用传统的计…...
SHELL 脚本: 导出NEO4j DUMP并上传SFTP
前提 开通sftp账号 安装expect 示例 NEO4J_HOME/path/to/neo4j # neo4j 安装目录 DUMP_PATH/data/dump # DUMP本地保存目录 DUMP_FILEneo4j_$(date %F).dump #导出文件名称 UPLOAD_DIR/path/to/stfp/dump/ #上传目录 $NEO4J_HOME/bin/neo4j-admin dump --databaseneo4j --t…...
Vue 封装一个函数,小球原始高度不固定,弹起比例不固定、计算谈几次后,高度低于1米
## 简介 本文将介绍如何使用Vue封装一个函数,计算小球弹跳的次数,直到高度低于1米。函数的参数包括小球的原始高度和弹起比例。通过代码案例演示了如何使用Vue进行封装和调用。 ## 函数封装 vue <template> <div> <label for&qu…...
外地人能申请天津公租房吗?2024天津积分落户租房积分怎么加?
相关推荐:在天津工作的外地人可以申请天津公共租赁住房吗? 外地人可以申请天津公共租赁住房吗? 2024年定居天津租房如何加分? 根据《天津居住证积分指标及积分表》的规定,在天津租房也可以参加积分结算,每…...
毕业设计——基于springboot的聊天系统设计与实现(服务端 + 客户端 + web端)
整个工程包含三个部分: 1、聊天服务器 聊天服务器的职责一句话解释:负责接收所有用户发送的消息,并将消息转发给目标用户。 聊天服务器没有任何界面,但是却是IM中最重要的角色,为表达敬意,必须要给它放个…...
公告栏功能:自动弹出提醒,重要通知不再错过
发布查询时,您是否遇到这样的困扰: 1、查询发布时间未到,学生进入查询主页后发现未发布任何查询,不断进行咨询。 2、有些重要事项需要进入查询主页就进行强提醒,确保人人可见,用户需要反馈“我知道了”才能…...
网络编程学习
思维导图 代码练习 TCP实现通信 服务器端代码 #include <myhead.h> #define SER_IP "192.168.152.135" #define SER_PORT 8910 int main(int argc, const char *argv[]) {//1创建用于监听的套接字int sfd -1;sfd socket(AF_INET,SOCK_STREAM,0)…...
centos物理电脑安装过程(2024年1月)
开机时:CtrlAltDelete键重启电脑 重启开始时:按F11,桌面弹出蓝色框,选择第二个SSK SFD142 1.00,回车 选择install centos7安装 选择后弹出选择安装选项,选择语言 连接无线网络 安装设置,选择磁…...
Web自动化测试平台开发---Automated_platform
一、项目简介 历时一个假期,Automated_platform 第一版完工,是一款基于po模式的自动化测试平台,采用后端技术为DjangoceleryRabbitMQmysql 配置mysql数据库,进行数据迁移后,运行项目后,即可成功访问http://127.0.0.1:8…...
mybatis-plus: 多租户隔离机制
文章目录 一、TenantLineHandler1、介绍2、包含的方法 二、简单实例三、实践1、实现TenantLineHandler接口 一、TenantLineHandler 1、介绍 TenantLineHandler 是 Mybatis-Plus 中用于处理多租户的接口,用于实现多租户数据隔离的具体逻辑。通过实现这个接口&#…...
用Socks5代理游戏,绕过“网络海关”去探险
1. 出海大冒险的开始 在游戏世界,就像在现实生活中一样,有时我们需要越过海洋去探索未知的世界。但是,网络上也有一些“海关”,限制我们访问某些网站或游戏服务器。这就是我们今天要克服的挑战! 2. Socks5代理…...
SpringBoot整合rabbitmq-直连队列,没有交换机(一)
说明:本文章只是springboot和rabbitmq的直连整合,只使用队列生产和消费消息,最简单整合! 工程图: A.总体pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://…...
CUDA C:查看GPU设备信息
相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 了解自己设备的性能是很有必要的,为此CUDA 运行时(runtime)API给用户也提供了一些查询设备信息的函数,下面的函数用于查看GPU设备的一切信息。 …...
深度学习如何入门?——从“小白”到“大牛”的深度学习之旅
大家好,今天我要和大家分享的主题是“深度学习如何入门”。深度学习作为人工智能领域的重要分支,已经取得了许多令人瞩目的成果。然而,对于初学者来说,深度学习可能显得有些神秘和难以入手。那么,如何才能快速入门深度…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...
