Java 下实现对mysql数据库的备份和恢复

2 篇文章 0 订阅
在java里面使用 Java.lang.Runtime 执行系统系统运行环境里面的命令,从而使用mysql自带的备份及恢复工具达到对数据库的备份和恢复
package org.hinsteny.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;


public class TestBackUpDataBase {
	
	private String pghome = "C:";
	private String pghomeString = "C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\";
        private String dataBaseUser = "root";
        private String dataBasePass = "123456";
        private String dataBaseName = "spring";
        private String backupSql = "C:\\spring.sql";
    
    /**
     * 备份数据库
     * @param metaData
     * @return
     */
    public Boolean backupDataBase(){
        StringBuilder command = new StringBuilder();
        command.append(pghomeString).append("mysqldump.exe").append(" --default-character-set=utf8").append(" -u")
		        .append(dataBaseUser).append(" -p").append(dataBasePass).append(" ").append(dataBaseName)
		        .append(" -B -r ").append(backupSql);
        System.out.println(command.toString());
        Process p = null;
        try {
            Runtime runtime = Runtime.getRuntime();
            p = runtime.exec(command.toString());
            int processComplete = p.waitFor();
            if (processComplete == 0) {
                System.out.println("Backup created successfully!");
            } else {
                System.out.println("Could not create the backup");
            }
        }catch (IOException exception){
            System.out.println("IOException");
        }catch (InterruptedException exception){
            System.out.println("InterruptedException");
        }
        return true;
    }
    
    /**
     * 恢复数据库
     * @param metaData
     * @return
     * @throws IOException 
     */
    public Boolean restoreDataBase() throws IOException{
        StringBuilder command = new StringBuilder();
        command.append(pghome).append("\n")
        		.append("cd ").append(pghomeString).append("\n")
        		.append("mysql.exe").append(" -u").append(dataBaseUser).append(" -p").append(dataBasePass).append(" ")
        		.append(dataBaseName).append(" < ").append(backupSql).append("\n")
        		.append("exit");
        System.out.println(command.toString());
        File f = new File("restore.bat");
        FileOutputStream fos = new FileOutputStream(f);
        fos.write(command.toString().getBytes());
        fos.close();
        Process p = null;
        try {
            Runtime runtime = Runtime.getRuntime();
            p = runtime.exec("cmd /C start restore.bat");
            int processComplete = p.waitFor();
            if (processComplete == 0) {
                System.out.println("Backup restored successfully");
            } else {
                System.out.println("Could not restore the backup");
            }
        }catch (IOException exception){
            System.out.println("IOException");
        }catch (InterruptedException exception){
            System.out.println("InterruptedException");
        }
        return true;
    }
    
	public static void main(String[] args) throws IOException {
		TestBackUpDataBase tb = new TestBackUpDataBase();
		tb.backupDataBase();
		tb.restoreDataBase();
	}

}


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值