使用 Apache Commons Exec 自动化脚本执行实现 MySQL 数据库备份

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker+Git+Maven的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

使用 Apache Commons Exec 自动化脚本执行实现 MySQL 数据库备份

  • 前言
  • 前提条件
  • 项目初始化
  • 编写 MySQL 备份脚本
  • 使用 Apache Commons Exec 执行备份脚本
  • 结论

前言

在日常的数据库维护中,备份是非常重要的任务。通过 Apache Commons Exec,可以方便地自动化执行 MySQL 数据库备份脚本。本文将介绍如何使用 Apache Commons Exec 实现这一功能。

前提条件

  • 安装并配置 MySQL 数据库
  • 安装 Java 开发环境和 Maven
  • 添加 Apache Commons Exec 依赖

项目初始化

首先,创建一个新的 Maven 项目,并在 pom.xml 文件中添加 Apache Commons Exec 依赖:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-exec</artifactId><version>1.4.0</version>
</dependency>

编写 MySQL 备份脚本

编写一个简单的 shell 脚本 backup.sh 来执行备份:

#!/bin/bash
# backup.sh
USER="root"
PASSWORD="password"
DATABASE="mydatabase"
BACKUP_DIR="/path/to/backup"
TIMESTAMP=$(date +"%F")mysqldump -u$USER -p$PASSWORD $DATABASE > $BACKUP_DIR/$DATABASE-$TIMESTAMP.sql

注意 确保脚本有执行权限:

chmod +x backup.sh

使用 Apache Commons Exec 执行备份脚本

编写一个测试 Java 类,使用 Apache Commons Exec 执行上述备份脚本:

import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
import org.apache.commons.exec.PumpStreamHandler;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;public class MySQLBackup {public static void main(String[] args) {CommandLine cmdLine = new CommandLine("/path/to/backup.sh");DefaultExecutor executor = new DefaultExecutor();// 设置超时控制,避免脚本无限执行long timeout = 60000; // 60 秒ExecuteWatchdog watchdog = new ExecuteWatchdog(timeout);executor.setWatchdog(watchdog);// 设置输出流和错误流try (FileOutputStream outputStream = new FileOutputStream(new File("backup_output.log"));FileOutputStream errorStream = new FileOutputStream(new File("backup_error.log"))) {PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream);executor.setStreamHandler(streamHandler);// 执行命令executor.execute(cmdLine);} catch (ExecuteException e) {//可以加入邮件、短信的通知System.err.println("Execution failed: " + e.getMessage());} catch (IOException e) {System.err.println("IO error: " + e.getMessage());}}
}

将上述 测试 Java 类编译并运行,确认 MySQL 数据库备份成功。执行过程中,日志将输出到 backup_output.log 和 backup_error.log 文件中。

以下是博主测试备份效果图,备份目录至 /usr/local/opt/mysql/data
在这里插入图片描述

通过上述案例相信大家已经掌握了如何使用Apache Commons Exec来进行数据库的备份
在日常系统开发中我们一般会启用定时任务,定时执行该备份(每天0点)来保证数据库数据安全

结论

通过 Apache Commons Exec 可以轻松实现自动化执行 MySQL 数据库备份脚本。这不仅简化了备份过程,还确保了备份任务的可靠性和可控性。Apache Commons Exec 提供的超时控制和流处理功能,使得在复杂的生产环境中,管理和维护外部进程变得更加容易。


在这里插入图片描述

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

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

相关文章

Part 3.1 深度优先搜索

深度优先搜索&#xff08;DFS&#xff09;&#xff0c;即按照深度优先的顺序搜索的算法。 深度优先搜索一般使用栈来实现。 [USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 6 6 6 \times 6 66 的跳棋棋盘&#xff0c;有六个棋子被放置在棋盘上&#xff0c;使得…

go解析yaml

go解析yaml文件关键就是结构体的创建 初学go tag字段要和yaml文件中的key对应起来&#xff0c;每个层级都要创建对应的结构体&#xff0c;有点烦 package configimport ("gopkg.in/yaml.v3""os" )type Config struct {MysqlConfig MysqlConfig yaml:&q…

开发nfc读卡器应用出现报错Unhandled Exception: SCARD_E_NO_SERVICE

使用flutter开发ACR122U的nfc读卡器的时候&#xff0c;报错&#xff1a; [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Exception: Error while establing context. Reason: SCARD_E_NO_SERVICE #0 PCSCBinding._checkAndThrow (package:fl…

Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)

Flink实现异常登陆监控&#xff08;两秒内多次登陆失败进行异常行为标记&#xff09; 在大数据处理领域&#xff0c;Apache Flink 是一个流行的开源流处理框架&#xff0c;能够高效处理实时数据流。在这篇博客中&#xff0c;我们将展示如何使用 Apache Flink 从 MySQL 中读取数…

科研数据分析常见问题

许多使用SPSSAU进行初次科研数据分析的同学&#xff0c;可能对数据分析方法的深层原理和研究思路缺乏全面的把握。因此&#xff0c;当导师针对数据研究方法提出具体问题时&#xff0c;他们可能会感到些许困惑或难以立即给出满意的答复。鉴于此&#xff0c;SPSSAU汇总了一些常见…

【工具】创客贴会员|创客贴截止2024年6月所有AI功能效果实测(热门推荐和图片编辑部分)

上一篇&#xff1a;【工具】创客贴会员&#xff5c;万字测评&#xff01;前沿设计网站创客贴的 AI 文生图效果测评 上一篇写的时候只测了文生图&#xff0c;因为百度那边活动没和创客贴接洽好&#xff0c;他们不清楚创客贴的AI和其他会员功能分开了&#xff0c;导致只有10次体…

virtualbox中ubuntu22.04网络配置

第一&#xff1a;添加两个网卡&#xff0c;网卡1是NAT方式&#xff0c;网卡2是仅主机模式&#xff08;两个顺序不能颠倒&#xff09; 第二步&#xff1a;启动ifconfig查看网络

搭载昇腾310NPU的Orange Pi AIpro开箱体验以及深度学习样例测试

Orange Pi AIpro开箱体验以及样例测试 随着人工智能和物联网技术的快速发展&#xff0c;单板计算机&#xff08;Single Board Computer, SBC&#xff09;在创客和开发者社区中越来越受到欢迎。我最近入手了一款高性能的单板计算机——Orange Pi AIpro。 在入手此款AI开发板之…

探索 Ollama: 你的本地 AI 助手

本期推荐的开源项目是 Ollama&#xff0c;它是一款本地大模型运行工具&#xff0c;可以帮助用户轻松下载和运行各种大型语言模型&#xff08;LLM&#xff09;&#xff0c;而无需将数据上传到云端。以下是关于 Ollama 的介绍以及安装和使用教程&#xff1a; Ollama 是什么&#…

VB.net 进行CAD二次开发(二)

利用参考文献2&#xff0c;添加面板 执行treeControl New UCTreeView()时报一个错误&#xff1a; 用户代码未处理 System.ArgumentException HResult-2147024809 Message控件不支持透明的背景色。 SourceSystem.Windows.Forms StackTrace: 在 System.Windows…

Spring事务管理进阶-rollbackFor propagation

黑马程序员JavaWeb开发教程 文章目录 一、rollbackFor二、propagation2.1 事务传播行为2.2 场景 一、rollbackFor 默认情况下&#xff0c;只有初选RuntimeException才会回滚异常。roolbackFor属性用于控制出现何种异常类型&#xff0c;回滚事务。 二、propagation 用来配置事…

网络安全基础技术扫盲篇 — 名词解释之“数据包“

用通俗易懂的话说&#xff1a; 数据包就像是一个信封。当你写信给某个人时&#xff0c;你将内容写在一张纸上&#xff0c;然后将纸叠起来并放入信封中&#xff0c;就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址&#xff0c;还有一些其他必要的信息&…

Java项目:93 springboot学生评奖评优管理系统的设计与实现

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本学生评奖评优管理系统有管理员和教师和学生。 管理员功能有个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;院系信息管理&a…

规则引擎Drools,基于mysql实现动态加载部署

文章目录 一、使用1、参考资料2、引包3、创建规则实体类4、实现drools动态规则5、模拟数据库&#xff0c;实现规则的CRUD6、创建控制层7、测试规则的动态添加&#xff08;1&#xff09;添加规则&#xff08;2&#xff09;修改规则&#xff08;3&#xff09;删除规则 8、模拟2个…

蓝桥杯单片机-国赛7——第十四届主观题代码参考

0.编程心得 本题中&#xff0c;要求测距能达到250cm&#xff0c;因此pca必须配置为0x01&#xff0c;但直接用会死机&#xff0c;因此需要使用CH作为判断量。 【iic的at24c02记录】&#xff1a; 读设备地址&#xff1a;0xA1 写设备地址&#xff1a;0xA0 非应答信号&#xff1…

【Linux】Linux基本指令3

目录 1.date指令 2.cal指令 3.find指令&#xff1a;&#xff08;灰常重要&#xff09; -name 4.grep指令——行文本过滤工具 5.zip/unzip指令&#xff1a; 6.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 7.bc…

Dinky DorisCDC 整库同步到 Doris

doris flinkcdc语法参考 Flink Doris Connector - Apache Doris 参考&#xff1a; Doris Flink DolphinScheduler Dinky 构建开源数据平台_dinky dolphinscheduler flink-CSDN博客

2024年,抖音小店618十大爆款预测!商家抓紧时间上架!

哈喽~我是电商月月 做电商的玩家都知道&#xff0c;一但到了换季或者是节日大促的时候&#xff0c;销量高&#xff0c;是最容易爆单的阶段 而提前上架一些热卖产品&#xff0c;爆单的几率在自己的店铺机会就越大 而最近的一个大型活动&#xff0c;就是618了&#xff0c;抖音…

只出现一次的数字II ---- 位运算

题目链接 题目: 分析: 对于只出现一次的数字, 他的任意一个bit位, 可能是0或1对于其余出现3次的数字, 假设有3n个数, 那么他们的任意一个bit相加的和可能是3n个0或3n个1那么对于数组中的全部数字的任意一个bit位之和共有三种情况: 3n个1 1 3n13n个0 1 13n个1 0 3n3n个0…

华为认证学习笔记:生成树

以太网交换网络中为了进行链路备份&#xff0c;提高网络可靠性&#xff0c;通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路&#xff0c;引发广播风暴以及MAC地址表不稳定等故障现象&#xff0c;从而导致用户通信质量较差&#xff0c;甚至通信中断。为解决交换网络…