Java 实现备份还原Mysql数据库

本文介绍了如何使用Java调用cmd命令来实现MySQL数据库的备份和还原。首先,获取当前的jdbc连接信息,然后详细阐述了数据库备份的步骤,包括配置MySQL环境变量和指定备份文件路径。接着,讨论了数据库还原过程,并提到了如何根据备份文件名称进行还原。最后,提及了格式化文件大小的相关内容。

Java 调用cmd备份还原Mysql数据库

获取当前jdbc连接信息

	Properties props = Resources.getResourceAsProperties("jdbc.properties");
		String url = props.getProperty("jdbc.url");
//		String driver = props.getProperty("jdbc.driverClassName");
		String username = props.getProperty("jdbc.username");
		String password = props.getProperty("jdbc.password");
//      获取 地址及数据库名称
		String[] arr = url.split("\\/");
		String port = arr[2].split("\\:")[0];
		String database = arr[3].split("\\?")[0];

数据库备份

调用cmd需配置mysql环境变量
指定备份文件路径,方便还原时、可以根据备份文件名称来还原,我这里指定到了D盘test目录下。

/**
	 * 数据库备份
	 * @author  Mr-Jiao
	 * @param port 地址端口(localhost)
	 * @param username 用户
	 * @param password 密码
	 * @param databasename 数据库名
	 * @param sqlname 备份文件名称
	 * @throws Exception
	 * @Date  2020年10月16日
	 */
public static String dataBaseDump(String port, String username, String password, String databasename, String sqlname) throws Exception {
		// mysqldump -h 地址 -u用户 -p密码 数据库 > d:/test.sql --备份D盘
	    File file = new File("D:\\test\\");
	    if ( !file.exists() ){
	        file.mkdir();
	    }
	    File datafile = new File(file+File.separator+sqlname+".sql");
	    if( datafile.exists() ){
	        throw new ServiceException("文件名已存在,");
	    }
	    //拼接cmd命令
	    Process exec = Runtime.getRuntime().exec("cmd /c mysqldump -h"+port+" -u "+username+" -p"+password+" "+databasename+" > "+datafile);
	    if( exec.waitFor() == 0){
	        System.out.println("数据库备份成功,备份路径为:"+datafile);
	        return datafile.toString();
	    }
	    return null;
	}

数据库还原

/**
	 * 数据库还原
	 * @author  Mr-Jiao
	 * @param port 端口地址(localhost)
	 * @param username 用户
	 * @param password 密码
	 * @param databasename 数据库名
	 * @param sqlname 备份文件名称
	 * @throws Exception
	 * @Date  2020年10月16日
	 */
    public static void backup(String port, String username, String password, String databasename, String sqlname) throws Exception {
    	// mysql -h端口号 -u用户 -p密码 数据库 < d:/test.sql 恢复到数据库中
        File datafile = new File("D:\\test\\"+sqlname+".sql");
        if( !datafile.exists() ){
            throw new ServiceException(sqlname+"文件不存在。");
        }
        //拼接cmd命令
        Process exec = Runtime.getRuntime().exec("cmd /c mysql -h"+port+" -u "+username+" -p"+password+" "+databasename+" < "+datafile);
        if( exec.waitFor() == 0){
            System.out.println("数据库还原成功,还原的文件为:"+datafile);
        }
    }

格式化文件大小

// 字节转换
   public static String getFileSize(long fileSize){
		double size=0.0;
		String sizeStr="0";
		String unit="字节";
		if(fileSize>=1024){
			size=fileSize/1024;
			if(size<1024){
				unit="KB";
			}
			if(size>=1024){
				size=size/1024;
				unit="MB";
			}
			if(size>=1024){
				size=size/1024;
				unit="GB";
			}
			DecimalFormat df=new DecimalFormat("#.0");
			sizeStr=df.format(size);
		}else{
			sizeStr=String.valueOf(fileSize);
		}
		return sizeStr+" "+unit;
	}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值