使用mysqldump命令导出指定数据库的数据+Java实现数据库的一键导出备份

2023-11-09

由于项目中需要用到在页面添加一个一键数据备份的功能,所以选择使用mysqldump命令的方法,用java的运行时类Java.lang.Runtime来使用后台窗口,记录下整个实现的过程;
1.首先mysqldump命令需要在mysql的bin目录下执行,这里我配置了msyql的环境变量,可以在命令窗口的默认目录下执行;
在环境变量的path栏里面添加mysql下面的bin文件夹路径即可:
在这里插入图片描述
2.我们win+R启动命令窗口,键入导出数据库的命令,命令为:
mysqldump -h数据库服务器IP -P数据库使用端口号 -u账户 -p密码 数据库名>保存路径
注意:-p要紧跟你的数据库密码;
在这里插入图片描述
我们通过上图可以发现键入命令后报警,但是我们去路径下会发现sql已经导出成功,这个问题应该是在MySQL5.6+版本的时候就有出现,是为了确保数据库的安全性采用的保护机制,因为我们将密码暴露在了命令中,我们可以将相关ip地址、数据库名称以及密码在mysql的配置文件my.ini中进行配置,然后再执行该命令,在mysqldump后添加配置文件路径即可,这里不再进行赘述;
进行到这,我们的命令已经可以成功导出sql了,接下来就需要在java中进行实现;
3.java实现数据库的一键导出备份:

3.1js前台代码

//按钮
<button class="layui-btn layui-btn-sm layui-btn-normal" id="backup">一键备份</button>


//函数事件
$(document).on('click', '#backup',function() {
        $.ajax({
            url: interface_backup,
            type: "post",
            datatype: "json",
            success: function(data){
                if(data.code== "200"){
                    layer.msg("创建备份成功,请您至本地D盘文件夹下查看!",{icon:1,time: 5000});
                }
                else{
                    layer.msg("创建备份失败,请联系管理员!",{icon:2,time:5000});
                }
            }
        })
    });

3.2java后台代码
controller代码

/**
 * 数据库备份
 */
  @PostMapping(value = "/backup")
  @EnableLog(module = "数据库备份", operation = "数据库备份", operationType = OperationType.SELECT)
  public ResponseResult backup() {
      return this.service.backup();
  }

service代码:

public ResponseResult backup() {
        ResponseResult result = new ResponseResult();
        UserContext crtUser = UserContextHolder.userContext();
        String filePath="D:\\";
        SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");//设置日期格式
        String time = df.format(new Date());
        String dbName="data";//备份的数据库名字为small
        try {
            Process process = Runtime.getRuntime().exec(
                    "cmd  /c  mysqldump -h10.130.15.13 -P3306 -u data -p123456 " + dbName + " > "
                            + filePath + "/" + "系统备份"+time
                            + ".sql");
            result.setCode(1000);
            result.setLogMsg(crtUser.getUserName()+"备份了系统数据");
            result.setSuccess(true);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            result.setCode(-1000);
            result.setSuccess(false);
        }
        return result;
    }

总结:至此,预想的功能便实现了,实现起来不难,但过程中遇到的问题确实也比较多,需要一步步耐心的解决;数据库的一键导入也与之类似,导出的sql再导入其他高版本或者低版本数据库时会出现格式无法兼容的情况,所以尽量导出与导入的数据库版本控制在相同的情况下。

欢迎参考的朋友在评论区提出其他更好的办法或者对本文中不对的地方进行指正留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用mysqldump命令导出指定数据库的数据+Java实现数据库的一键导出备份 的相关文章

随机推荐

  • SpringBoot不依赖(禁用)Gemfire数据库启动的方法

    默认情况下SpringBoot的启动是要依赖GemFire做为缓存数据库的 如果做一个小的项目 不需要缓存数据库 这将是一个不容易摘除的工作 通过对其官网技术资料的分析 这个也很容易做到 说一下我的技术环境 Spring boot版本 2
  • 乐观锁与悲观锁讲解,CAS、synchronized、锁升级、ReentrantLock、AQS

    什么是乐观锁和悲观锁 乐观锁 总是假设最好的情况 每次拿数据的是时候都认为别人没有进行修改 所以不会加锁 但是为了保证线程安全 每次修改的时候都会判断这个数据有没有被修改过 适用于写少的场景 因为在写操作较多时如果失败会不断通过自旋判断数据
  • IGBT基本工作原理及IGBT的作用是什么?

    IGBT 今天我们一起来了解关于IGBT 绝缘栅双极性晶体管 芯片 在过去的几十年中 我们生活的每个角落都离不开能源的驱动 然而 传统的功率晶体管却受限于一些方面不足 幸运的是 IGBT芯片的出现彻底改变了这一局面 IGBT和MOS管都是一
  • JavaWeb01-Servlet-thymeleaf-mvd-dispatcher-controller

    Servlet servlet的基本作用 第一个servlet程序 演示servlet的生命周期 public class Demo02Servlet extends HttpServlet Override public void ini
  • CodeGeeX使用指南

    CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型 使用超过二十种编程语言训练得到 基于CodeGeeX开发的插件可以实现通过描述生成代码 补全代码 代码翻译等一系列功能 CodeGeeX同样提供可以定制的提示模式 Pro
  • 华为OD机试真题-组装数组【2023Q1】

    题目内容 给你一个整数M和数组N N中的元素为连续整数 要求根据N中的元素组装成新的数组R 组装规则 1 R中元素总和加起来等于M 2 R中的元素可以从N中重复选取 3 R中的元素最多只能有1个不在N中 且比N中的数字都要小 不能为负数 输
  • 1012 数字分类

    1012 数字分类 题目 输入格式 输入样例 输出样例 代码 小结 题目 给定一系列正整数 请按要求对数字进行分类 并输出以下 5 个数字 A 1
  • sql 选取前两条_从零开始学习SQL(二)SQL简单查询

    SQL简单语句可用于查询数据库中的内容 数据来源 SQLZOO SELECT from WORLD Tutorial zh sqlzoo net 一 基本查询语句 从数据库中查询数据时 需要使用SELECT语句 通常SELECT语句可用于指
  • 【滤波器】1. 一阶RC滤波器

    文章目录 1 低通滤波器 2 高通滤波器 3 常用工具 1 低通滤波器 电容上的分压 U C U I
  • shell awk 入门

    awk 好用的数据处理工具 awk 也是一个非常棒的数据处理工具 sed 常常用于一整个行的处理 awk 则比较倾向于一行当中分成数个 栏位 或者称为一个域 也就是一列 来处理 因此 awk 相当的适合处理小型的数据数据处理呢 awk 通常
  • 在Linux系统中如何把文件拷贝到U盘

    Linux下把所有的都当成文件处理 如果在linux系统下需要拷贝文件 哪么你需要先把U盘挂载到系统中的某一个位置 然后再使用cp命令完成拷贝 工具原料 Linux操作系统一台 U盘一枚 方法 步骤 1 把U盘插入Linux电脑 确保U盘指
  • 用C语言编写的推箱子小游戏

    大一时候的期末大作业 一直没找到 在桌子缝里找到了优盘 现在才把内容放上来 希望能帮到你们 具体内容分为实验报告和程序具体代码 程序设计基础 期末大作业报告 实验设计 1 编写推箱子小游戏 2 使用C语言 3 使用Dev C 编程程序 4
  • 7. AES加密之base64编码

    整个加密的流程 编码算法 base64算法 与加密解密无关 只是对数据进行编码 方便在网络间进行传输 import org junit jupiter api Test import java nio charset StandardCha
  • SpringBoot+EasyCaptcha实现验证码功能

    一 EasyCaptcha简介 Java图形验证码 支持gif 中文 算术等类型 可用于Java Web JavaSE等项目 开源地址 https github com whvcse EasyCaptcha 二 SpringBoot项目如何
  • 华为OD机试真题-最多获得的短信条数【2023.Q1】

    题目内容 某云短信厂商 为庆祝国庆 推出充值优惠活动 现在给出客户预算 和优惠售价序列 求最多可获得的短信总条数 输入描述 第一行客户预算M 其中 0 M 10 6 第二行给出售价表 P1 P2 Pn 其中 1 n 100 Pi为充值 i
  • python3 在线解析jpg图片或解析本地jpg,判断jpg是否损坏

    一 JPEG图片格式详解 JPEG图片格式组成部分 SOI 文件头 APP0 图像识别信息 DQT 定义量化表 SOF0 图像基本信息 DHT 定义Huffman表 DRI 定义重新开始间隔 SOS 扫描行开始 EOI 文件尾 二 数据结构
  • SIEM的内容

    20200920 昨天看到了与SIEM相关的内容 但是除了一篇文章给我讲解了他们部分的SOC架构与方案 这个算是SIEM的升级版吧 其他的文章都没有给我非常好的反馈 这里来记录一下 文章列表 1 Security Correlation T
  • 反射与泛型

    文章目录 Class API demo reflect set action Class API getField getField String name 能获取 public 的字段 包括父类的 getDeclaredField Str
  • Linux E:Could not get lock /var/lib/dpkg/lock - open (11:Resource temorarily unavailable)

    1 错误提示如下图所示 2 解决方法 1 找到并杀掉所有的apt get和apt进程 运行命令 ps A grep apt 2 3 使用命令 sudo kill 9 进程号 或者 sudo kill SIGKILL 进程号 来关闭所有进程
  • 使用mysqldump命令导出指定数据库的数据+Java实现数据库的一键导出备份

    由于项目中需要用到在页面添加一个一键数据备份的功能 所以选择使用mysqldump命令的方法 用java的运行时类Java lang Runtime来使用后台窗口 记录下整个实现的过程 1 首先mysqldump命令需要在mysql的bin