傻瓜式Java操作MySQL数据库备份(使用mysqldump命令)

注释都是由chatGPT生成,有什么问题可以评论交流

  1. @Value("${backup.sql.database}")
  2. private String databases;
  3. @Value("${backup.sql.host}")
  4. private String host;
  5. @Value("${backup.sql.username}")
  6. private String username;
  7. @Value("${backup.sql.password}")
  8. private String password;
  9. private static final int MAX_BACKUP_COUNT = 7; // 最多保存备份文件的数量
  10. /**
  11. * 备份MySQL数据库
  12. *
  13. * @return 备份文件的绝对路径
  14. */
  15. public void backupSql() { // 定义备份 MySQL 数据库的方法
  16. String[] split = databases.split(","); // 根据逗号分隔符,将要备份的数据库名称拆分成数组
  17. for (String database : split) { // 遍历每个数据库名称
  18. String backup_path = ContentsUtil.TEMP_BACKUPSQL + database + "/"; // 备份文件存放目录
  19. String currentDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); // 当前日期
  20. String currentTime = new SimpleDateFormat("HH-mm-ss").format(Calendar.getInstance().getTime()); // 当前时间
  21. String backupFileName = database + "-" + currentDate + "-" + currentTime + ".sql"; // 备份文件名
  22. String backupFilePath = backup_path + backupFileName; // 备份文件路径
  23. new File(backup_path).mkdirs(); // 创建备份文件存放目录,如果已经存在则不创建
  24. try { // 尝试备份数据库
  25. List<String> command = new ArrayList<>(); // 新建命令列表
  26. command.add("mysqldump"); // 添加命令:备份 MySQL 数据库
  27. command.add("--host=" + host); // 添加命令参数:MySQL 服务器地址
  28. command.add("--user=" + username); // 添加命令参数:MySQL 用户名
  29. command.add("--result-file=" + backupFilePath); // 添加命令参数:备份文件路径
  30. command.add("--databases"); // 添加命令参数:指定要备份的数据库
  31. command.add(database); // 添加要备份的数据库名称
  32. ProcessBuilder pb = new ProcessBuilder(command); // 创建进程构建器
  33. pb.environment().put("MYSQL_PWD", password); // 设置 MySQL 密码
  34. pb.redirectErrorStream(true); // 合并标准错误输出和标准输出
  35. Process runtimeProcess = pb.start(); // 启动进程
  36. InputStream inputStream = runtimeProcess.getInputStream(); // 读取进程的标准输出
  37. BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); // 创建输入流读取器
  38. int processComplete = runtimeProcess.waitFor(); // 等待进程结束
  39. if (processComplete == 0) { // 如果进程成功结束
  40. deleteOldBackups(backup_path); // 删除多余的备份文件
  41. System.out.println("Backup Success: " + backupFilePath); // 输出备份成功信息
  42. } else { // 如果进程没有成功结束
  43. System.out.println("Backup Failed"); // 输出备份失败信息
  44. }
  45. } catch (IOException | InterruptedException ex) { // 如果出现异常
  46. System.out.println("Error: " + ex.getMessage()); // 输出异常信息
  47. }
  48. }
  49. }
只保留七个周期内的备份数据
  1. /**
  2. * 删除多余的备份文件,最多只保留 MAX_BACKUP_COUNT 个文件
  3. */
  4. private static void deleteOldBackups(String backup_path) {
  5. // 创建文件夹对象
  6. File backupDir = new File(backup_path);
  7. // 获取该文件夹下的所有文件对象
  8. File[] backupFiles = backupDir.listFiles();
  9. // 将文件对象数组转换成 List,方便排序和删除
  10. List<File> backupList = Arrays.asList(backupFiles);
  11. // 对 List 中的文件对象按照修改时间进行升序排序
  12. Collections.sort(backupList, new Comparator<File>() {
  13. public int compare(File f1, File f2) {
  14. return Long.compare(f1.lastModified(), f2.lastModified());
  15. }
  16. });
  17. // 计算需要删除的文件数量
  18. int excessCount = backupList.size() - MAX_BACKUP_COUNT;
  19. // 如果需要删除的文件数量大于 0,则循环删除文件
  20. if (excessCount > 0) {
  21. for (int i = 0; i < excessCount; i++) {
  22. backupList.get(i).delete();
  23. }
  24. }
  25. }

傻瓜式Java操作MySQL数据库备份(使用mysqldump命令)的更多相关文章

  1. Java实现MySQL数据库备份(二)

    权声明:本文为博主原创文章,未经博主允许不得转载. 博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这种方法比较繁杂,下面介绍另一种备份MyS ...

  2. Java实现mysql数据库备份

    Runtime是一个与JVM运行时环境有关的类,这个类是Singleton的. Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在Java中唯一一个得到运行时环境的方法. ...

  3. Java达到MySQL数据库备份(两)

    博客<Java实现MySQL数据库备份(一)>使用I/O流的方式实现了MySQL数据库的备份,这样的方法比較繁杂.以下介绍还有一种备份MySQL数据库的方法: import java.io ...

  4. Java实现MySQL数据库备份(一)

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份: import java.io.BufferedReader; import java.io.File; import jav ...

  5. java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)

    插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...

  6. Java 操作MySql数据库

    Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...

  7. java 实现mysql数据库备份

    package com.itenp.gen.action; import java.io.BufferedReader; import java.io.FileInputStream; import ...

  8. mysql数据库备份与还原命令

    还原一个数据库:mysql -h localhost -u root -p123456 www 备份一个数据库:mysqldump -h localhost -u root -p123456 www ...

  9. ubuntu mysql 数据库备份以及恢复[命令行]

    之所以加了个ubuntu,其实也没什么,就是恢复数据库的时候给幽默了一下,所以特地加上.   写在前面:一直很想好好的学linux命令行.shell编程,幻想自己能够通过学习进而成为命令行高手,游刃于 ...

  10. mysql数据库备份及恢复命令mysqldump,source的用法

    还原一个数据库:mysql -h localhost -u root -p123456 www<c:/www.sql 备份一个数据库:mysqldump -h localhost -u root ...

随机推荐

  1. console小知识

    console.log(JSON.stringify(object,null,2));

  2. 网络拓扑—NAT内外网映射

    使用Windows Server 2003 网络拓扑 Router 外网:NATIP 网段 = 192.168.17.0/24 内网:仅主机模式IP = 172.16.29.4 Client1:仅主机 ...

  3. C语言:通讯录程序设计(多功能)

    回顾我的代码shi 通讯录程序设计 主函数 遇到的困难 补充标注说明(一定要看) 效果展示截图 结语 程序源代码 通讯录程序设计 作者前言:该通讯录作品是我大一的C语言结课作业,代码像shi山一样,之 ...

  4. python基础环境

    刚开始接触并学习一门开发语言,带着不求甚解的想法,其实也挺有好处的:我并不是所有的东西都知道,但是代码跑起来了. 但是时间久了,还是带着这种想法,可能就会遇到一些棘手的问题.比如电脑上不知不觉已经安装 ...

  5. 提升WordPress网站加载速度的8个小技巧

    提升WordPress网站加载速度是至关重要的,它不仅可以提高用户体验,还有助于SEO排名.以下是提升WordPress网站加载速度的8个小技巧,希望能帮助到大家. 优化图片: 使用适当大小和格式的图 ...

  6. golang sync.once done 热路径

    sync.once 为什么会将done放在结构体第一个字段,就能够提升性能了? 我们先来看看sync.once的结构体: // Once is an object that will perform ...

  7. Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

    Rainbond 5.5 版本主要优化扩展性.服务治理模式可以扩展第三方 ServiceMesh 架构,兼容kubernetes 管理命令和第三方管理平台. 主要功能点解读: 1. 支持 Istio, ...

  8. Postman POST多个文件

    软件做的比较好用,

  9. C#笔记 窗体练习:海康相机SDK二次开发

    第一次写窗体应用程序,太闲了,给自己找点事情做... 1. 最基本的打开关闭 代码:https://gitee.com/yurj0403/hik-camera 强行练习一下用git 2. 加了状态栏 ...

  10. itest(爱测试) 4.5.2 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理4合1,又有丰富的统计分析.可按测试包分配测试用例执行,也可建测试迭代(含任务, ...