java中实现数据库备份

java中实现数据库备份

1、直接上代码

    public void backup() {
        File file = new File(backupConfig.getBackupPath());
        if (!file.exists()) {
            file.mkdirs();
        }
        String fileName = backupConfig.getBackupPath() + "/" + backFilePrefix + LocalDate.now() + ".sql";
        /** 默认使用linux*/
        //String cmdPrefix = "/bin/sh -c ";
        String c1 = "/bin/sh";
        String c2 = "-c";
        String os_name = System.getProperty("os.name");
        // 判断是否是windows系统
        if (os_name.toLowerCase().startsWith("win")){
            //cmdPrefix = "cmd /c ";
            c1 = "cmd";
            c2 = "/c";
        }
        String cmd = backupConfig.getMysqldumpPath()  // mysqldump的绝对路径,配置环境变量,直接写mysqldump即可
                + " -u" + backupConfig.getUsername()  // 数据库用户名
                + " -p" + backupConfig.getPassword()  // 数据库密码
                + " -P" + backupConfig.getPort()      // 数据库端口号
                + " " + backupConfig.getDbName()      // 数据库名
                + " > " + fileName;                   // 最终写入的文件路径
        try {
            System.out.println("第一个参数 " + c1);
            System.out.println("第二个参数 " + c2);
            System.out.println("具体命令 " + cmd);

            log.error("数据库备份START" + LocalDateTime.now());
            /**
            * exec重载方法有一个参数的,window下执行正常,linux下无法完成备份。
            * 使用多参数重载方法都可以正常备份
            */
            Process process = Runtime.getRuntime().exec(new String[]{c1, c2, cmd});
            process.waitFor();
            log.error("数据库备份END" + LocalDateTime.now());
        } catch (Exception e) {
            e.printStackTrace();
            log.error("数据库备份失败:{}", e.getMessage());
        }
    }

2、定时备份
使用定时任务,调用该方法,就可以实现定时备份数据库了

小尾巴~~
只要有积累,就会有进步

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值