十七、mysql数据库备份

使用java代码在window环境下实现定时执行Mysql备份与还原

   //备份
    public void doBackup() {
        Date currentTime = new Date();
        System.out.println("当前时间是:" + new Date());
        Runtime runtime = Runtime.getRuntime(); 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
        String sdfDate = sdf.format(currentTime);
        //备份到的目标文件
        String filePath = "E:\\temporary\\time_" + sdfDate + ".sql";
        //要执行的命令(%dwz%是环境变量值)
        String cmdStr = "%dwz%mysqldump --defaults-extra-file=%dwz%..\\my.ini charm_village > " + filePath;
        try {
            String[] cmd = {"CMD", "/C", cmdStr};
            String[] path = {"dwz=E:\\dwz-software\\mysql-5.7.27-winx64\\bin\\"};
            //执行外部程序
            Process process = runtime.exec(cmd, path);
            InputStream errorStream = process.getErrorStream();
            //获取命令执行时的错误信息
            System.err.println(IOUtils.toString(errorStream, "UTF-8"));
            //阻塞当前线程,并等待外部程序中止后获取结果码
            int exitVal  = process.waitFor();
            if(exitVal == 0) {
                System.out.println("数据库备份成功!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

关于返回结果类型:Process,它有几个方法:
1.destroy():杀掉子进程
2.exitValue():返回子进程的出口值,值 0 表示正常终止
3.getErrorStream():获取子进程的错误流
4.getInputStream():获取子进程的输入流
5.getOutputStream():获取子进程的输出流

6.waitFor():导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。假设已终止该子进程。此方法马上返回。假设没有终止该子进程,调用的线程将被堵塞。直到退出子进程,依据惯例,0 表示正常终止

参考文章:

Mysql:Java代码实现数据库定时备份与还原详解

猜你喜欢

转载自www.cnblogs.com/zheaven/p/11887286.html