精华内容
下载资源
问答
  • 运用java程序的Runtime类来getRuntime,使用runtime的exec方法来调用cmd命令,使用cmd命令“mysqldump -u 用户名 -p密码 数据库名”来备份数据库,并使用流来保存备份文件到指定目录。
  • java实现对mysql数据库备份与还原,可跨平台,windows与Linux通用,代码内含有利用注册表信息获取mysqldump命令实例
  • JAVA实现数据库备份与还原,希望多与大家交流
  • import java.io.BufferedReader;   import java.io.File;   import java.io.FileOutputStream;   import java.io.IOException;...  * MySQL数据库备份  *   */   public class MySQLDatabase
  • java实现数据库备份与恢复

    前言

    为了应对项目中数据库突然奔溃,导致丢失数据,这时可以通过代码实现数据库的定时备份与恢复,即使数据库宕机了,我们也可以将之前备份好的数据信息还原到数据库。通过java代码实现数据库的备份与恢复,其实就是通过java代码操作命令行。

    那么如何实现数据库的备份与恢复呢,下面案例可供参考。

    一、数据库备份

      /**
      * 数据库文件备份
      */
     @RequestMapping("/doBackup")
     public R doBackup(){
         System.out.println("现在时间是"+new Date());
         Runtime runtime = Runtime.getRuntime();  //获取Runtime实例
         String database1 = "equipments"; // 需要备份的数据库名
         Date currentDate = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
         String sdfDate = sdf.format(currentDate);
    
         String filepath = "d:\\sql\\time_" + sdfDate + ".sql"; // 备份的路径地址
         //执行命令(此处需要定位到mysqldump.exe路径,--default-character-set=gbk是为了解决中文乱码问题)
         String stmt = "d:\\wamp64\\bin\\mysql\\mysql5.7.24\\bin\\mysqldump -h localhost -uroot -p12345678 --default-character-set=gbk "+database1+" > "+filepath;
         System.out.println(stmt);
         try {
             String[] command = { "cmd", "/c", stmt};
             Process process = runtime.exec(command);
             InputStream input = process.getInputStream();
             System.out.println(IOUtils.toString(input, "UTF-8"));
             //若有错误信息则输出
             InputStream errorStream = process.getErrorStream();
             System.out.println(IOUtils.toString(errorStream, "gbk"));
    
             //保存备份数据信息到数据库中
             SqlFileEntity sqlFileEntity = new SqlFileEntity();
             sqlFileEntity.setName("time_" + sdfDate + ".sql");
             sqlFileEntity.setPath(filepath);
             sqlFileEntity.setCreateTime(currentDate);
             this.save(sqlFileEntity);
         } catch (IOException e) {
             e.printStackTrace();
         }
         return R.ok();
     }
    

    二、数据库恢复

      /**
      * 还原数据库
      */
     @RequestMapping("/restore")
     public R restore(@RequestBody String filename) {
         String database = "equipments"; // 需要备份的数据库名
         System.out.println("现在时间是" + new Date());
         Runtime runtime = Runtime.getRuntime();
         try {
             String filePath =  "d:\\sql\\"+filename; // sql文件路径
             String stmt = "mysql -h localhost -uroot -p12345678 "+database+"< " + filePath;
             System.out.println(stmt);
             String[] command = {"cmd", "/c", stmt};
             Process process = runtime.exec(command);
             //若有错误信息则输出
             InputStream errorStream = process.getErrorStream();
             System.out.println(IOUtils.toString(errorStream, "gbk"));
             //等待操作
             int processComplete = process.waitFor();
             if (processComplete == 0) {
                 System.out.println("还原成功.");
             } else {
                 throw new RuntimeException("还原数据库失败.");
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
         return R.ok();
     }
    

    总结

    以上就是今天要讲的内容,本文仅仅简单介绍了java代码实现数据库的备份与恢复,如果要实现数据库的定时备份与恢复,还需要编写定时器或者定时任务,将数据库的备份与恢复添加到定时任务中即可。

    展开全文
  • Java实现数据库备份

    2020-07-14 14:08:52
    需求:每晚凌晨对项目数据库进行定时备份。 方案:采用定时任务使用Runtime.getRuntime().exec(cmd)操作mysqldump命令实现 window环境下: @Configuration @EnableScheduling @Slf4j public class JobService { @...

    需求:每晚凌晨对项目数据库进行定时备份。
    方案:采用定时任务使用Runtime.getRuntime().exec(cmd)操作mysqldump命令实现

    window环境下:

    @Configuration
    @EnableScheduling
    @Slf4j
    public class JobService {
    
        @Scheduled(cron = "0 0 0 * * ?")
        private void dbBackup() throws Exception {
            String cmd = "cmd /c mysqldump -uroot -p123456 runwel>C:/Users/17586/Desktop/"+DateUtil.get8Date()+".sql";
            Process process = Runtime.getRuntime().exec(cmd);//执行语句
            process.waitFor();//等待上述命令执行完毕后打印下面log
            log.info("数据库备份结束,备份结果:{}",process.exitValue() == 0 ? "success" : "fail");
        }
    
    }
    

    Linux环境下(我的Linux环境下mysqldump没有设置软连接所以需要进入具体目录下,这个可根据个人安装路径修改):

    @Configuration
    @EnableScheduling
    @Slf4j
    public class JobService {
    
        @Scheduled(cron = "0 0 0 * * ?")
        private void dbBackup() throws Exception {
            String [] cmd = {"/bin/sh","-c","/usr/local/mysql/bin/mysqldump -uroot -p123456 runwel>/usr/springboot/assessment/dbbackup/"+DateUtil.get8Date()+".sql"};
            Process process = Runtime.getRuntime().exec(cmd);//执行语句
            process.waitFor();//等待上述命令执行完毕后打印下面log
            log.info("数据库备份结束,备份结果:{}",process.exitValue() == 0 ? "success" : "fail");
    
        }
    }
    

    备份命令:
    格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql
    我的在本地端口也是默认端口 所以没加主机与端口

    注意:脚本名称尽量不要出现特殊字符否则会出现无法导出的情况。
    此处我的数据库账号密码以及路径直接写死在命令中了,具体使用时可将数据库路径、账号、密码等数据抽离出来方便后续维护。

    展开全文
  • 利用java语言,备份mysql数据库,还原mysql数据库
  • java实现mysql数据库备份

    热门讨论 2012-04-29 10:42:38
    文档中的代码采用java技术模拟mysql命令实现mysql数据库备份
  • java实现数据库容灾备份,可以集成定时任务去实时备份 或者定期备份,欢迎一起讨论
  • 无论是MySQL还是PostgreSQL数据库,如果你不能每天对其进行备份的话,...庆幸的是,MySQL和PostgreSQL都提供将数据库转化成flat-text文件的工具,这样你就可以将数据库信息输入到其它系统或者将数据库备份并保留它。
  • JAVA实现数据库备份

    2019-12-23 15:25:24
    JAVA实现数据库备份 package com.platform.controller; import com.platform.utils.R; import org.springframework.web.bind.annotation.*; import java.io.File; import java.text.SimpleDateFormat; import java...

    JAVA实现数据库备份

    package com.platform.controller;
    
    import com.platform.utils.R;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.File;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Random;
    
    import javax.servlet.http.HttpServletRequest;
    
    /**
     * Controller
     *
     * @author lwq
     * @email 956743167@qq.com
     * @date 2019-12-23 09:37:35
     */
    @RestController
    @RequestMapping("dbBackup")
    public class DbBackupController {
    	private static String separator = "/";
      
        /**
         * 备份数据库
         */
        @RequestMapping("/db")
        public R list(HttpServletRequest request) {
        	try {
        		String realPath = request.getServletContext().getRealPath("/");
            	String path = realPath + "/dbBackUp/" + separator;
            	String sqlFileName = getRunTimeName();
    			dbBackUp("Mysql的用户名", "Mysql的密码", "要备份的数据库名", "要保存的路径", '备份的数据名,此处用时间戳取名了');
    		} catch (Exception e) {
    			e.printStackTrace();
    			return R.error("备份数据失败");
    		}
            return R.ok();
        }    
        /**
         * 
         * @param root 用户名
         * @param pwd 密码
         * @param dbName 数据库名
         * @param backPath 保存路径
         * @param backName 保存名称
         * @throws Exception
         */
        public static void dbBackUp(String root,String pwd,String dbName,String backPath,String backName) throws Exception {
            String pathSql = backPath+backName;
            File fileSql = new File(pathSql);
            File file = new File(backPath);
            //创建备份sql文件
            file.mkdirs();
            if (!fileSql.exists()){
                fileSql.createNewFile();
            }
            //mysqldump -hlocalhost -uroot -p123456 db > /home/back.sql
            StringBuffer sb = new StringBuffer();
            sb.append("mysqldump");
            sb.append(" -h 127.0.0.1");//此处ip可以是别的机器的ip
            sb.append(" -u"+root);
            sb.append(" -p"+pwd);
            sb.append(" "+dbName+" >");
            sb.append(pathSql);
            System.out.println("cmd命令为:"+sb.toString());
            Runtime runtime = Runtime.getRuntime();
            System.out.println("开始备份:"+dbName);
            System.out.println("cmd /c"+sb.toString());
            Process process = runtime.exec("cmd /c"+sb.toString());
            System.out.println("备份成功!");
        } 
        public static String getRunTimeName() {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
            String newDate=sdf.format(new Date());
            String result="";
            Random random=new Random();
            for(int i=0;i<3;i++){
                result+=random.nextInt(10);
            }
            return newDate+result+".sql";
        }
    }
    
    展开全文
  • java 定时备份数据库

    2018-05-29 15:53:29
    mysql 数据库备份,通过 java 代码实现设定备份时间,定时每天进行备份。
  • java框架开发的食堂管理系统+完整数据库备份
  • 此mysqldump版本为5.6.12,内含详细使用方法,包括cmd的备份方式、java备份方式
  • 数据库实现本地备份

    2018-08-26 18:33:46
    1. 使用定时任务调用mysqldump命令实现mysql数据库数据库备份。 2. 通过rabbitmq发送消息给客户端。让客户端拉取备份数据
  • 下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份:import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io....

    下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份:

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    import java.io.PrintWriter;

    /**

    * MySQL数据库备份

    *

    * @author GaoHuanjie

    */

    public class MySQLDatabaseBackup {

    /**

    * Java代码实现MySQL数据库导出

    *

    * @author GaoHuanjie

    * @param hostIP MySQL数据库所在服务器地址IP

    * @param userName 进入数据库所需要的用户名

    * @param password 进入数据库所需要的密码

    * @param savePath 数据库导出文件保存路径

    * @param fileName 数据库导出文件文件名

    * @param databaseName 要导出的数据库名

    * @return 返回true表示导出成功,否则返回false。

    */

    public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath, String fileName, String databaseName) throws InterruptedException {

    File saveFile = new File(savePath);

    if (!saveFile.exists()) {// 如果目录不存在

    saveFile.mkdirs();// 创建文件夹

    }

    if(!savePath.endsWith(File.separator)){

    savePath = savePath + File.separator;

    }

    PrintWriter printWriter = null;

    BufferedReader bufferedReader = null;

    try {

    printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));

    Process process = Runtime.getRuntime().exec(" mysqldump -h" + hostIP + " -u" + userName + " -p" + password + " --set-charset=UTF8 " + databaseName);

    InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");

    bufferedReader = new BufferedReader(inputStreamReader);

    String line;

    while((line = bufferedReader.readLine())!= null){

    printWriter.println(line);

    }

    printWriter.flush();

    if(process.waitFor() == 0){//0 表示线程正常终止。

    return true;

    }

    }catch (IOException e) {

    e.printStackTrace();

    } finally {

    try {

    if (bufferedReader != null) {

    bufferedReader.close();

    }

    if (printWriter != null) {

    printWriter.close();

    }

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    return false;

    }

    public static void main(String[] args){

    try {

    if (exportDatabaseTool("172.16.0.127", "root", "123456", "D:/backupDatabase", "2014-10-14.sql", "test")) {

    System.out.println("数据库成功备份!!!");

    } else {

    System.out.println("数据库备份失败!!!");

    }

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    展开全文
  • PostgreSQL自带一个客户端pgAdmin,里面有个备份,恢复选项,也能对数据库进行备份 恢复(还原),但最近发现数据库慢慢庞大的时候,经常出错,备份的文件过程中出错的几率那是相当大,手动调节灰常有限。所以一直寻找...
  • 如何通过JAVA使得ORACLE数据库信息备份还原,起到一个思路的作用,只是列举了简单的例子
  • 使用java代码实现Mysql备份 二、思路 先写好一个定时器,每隔多少时间执行一次备份 备份方法为,通过java向命令行写入命令执行 首先在cmd中模拟备份,成功之后,将命令行写入java程序 三、具体操作 (1) 命令行...
  • Java在线备份和还原MySQL数据库

    热门讨论 2011-12-21 15:17:18
    Java在线备份和还原MySQL数据库,使用mysqldump命令实现备份,使用mysql命令实现的还原,具体大家看源代码吧,在还原的时候足足整了我一个下午才找到错误原因,源代码里面有写原因。大家看代码就知道了。
  • 通过java web 实现数据库备份,数据库:postgresql 需求: 需要实现, 数据库备份进度条显示备份进度, 备份中途可以点击取消按钮,取消后可继续操作, 数据恢复 跟阿里的数据库备份操作一样
  • java数据库备份与恢复小例子(DAO) 先打开数据库,执行文件内存储过程 再执行工程,有一个JFrame
  • java备份mysql数据库

    2017-09-03 22:48:42
    java备份mysql、可执行jar文件、配置文件可修改、xml解析,执行sql语句,jdbc访问数据库,jdbc配置文件可修改
  • 通过java实现mysql数据库备份与还原

    千次阅读 2019-04-23 11:19:24
    这里写自定义目录标题 package ... import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; i...
  • java备份数据库表的数据

    千次阅读 2018-09-11 17:57:16
    package com.diamond.web.utils; import java.io.File; import java.io.IOException;  public class MySQLDatabaseBackup { ... * Java代码实现MySQL数据库导出   *  * @author GaoHuanjie   * ...
  • 今天将非常早就实现的一个Oracle数据库备份功能粘贴出来,这个功能是在大学做阶段设计时写的:import java.io.File;import java.io.IOException;/*** Oracle数据库备份** @author GaoHuanjie*/public class Oracle...
  • Java完成的程序可以把数据库里的数据导出为其它数据库的insert语句,用于数据备份或迁移到另一个数据库,注意,在数据转换过程中,文本和二进制字段将被忽略,程序支持oracle、sybase、mysql和ms sqlServer数据库。...
  • ... import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled;...import org.springframework.stereotype.Component;...import java.io.*; @Com

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,629
精华内容 49,051
关键字:

java数据库的备份

java 订阅