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;
}

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

464

被折叠的 条评论
为什么被折叠?



