zoukankan      html  css  js  c++  java
  • 十七、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代码实现数据库定时备份与还原详解

  • 相关阅读:
    Python-08-内置函数
    Python-07-高阶函数
    Python-06-函数
    Python-05-字符串格式化
    Python-04-数据结构
    Python-03-流程控制
    yum-config-manager命令找不到的解决方法
    Centos7 yum 出现could not retrieve mirrorlist 最终解决方案
    后台皮肤保存
    基于Docker的Mysql主从复制搭建
  • 原文地址:https://www.cnblogs.com/zheaven/p/11887286.html
Copyright © 2011-2022 走看看