SSH框架实现数据库备份与还原
一、 SSH下边数据库备份与还原工具类
- l 该方法采用Shell命令,可以方便的实现数据库的备份功能
- 查看过上一篇定时器配置的朋友可以发现该类已经放到Spring容器里面了,我们可以利用Spring注入的方式
- Action请求来调用可以实现实时备份与还原
- 利用Spring定时器,唯一一点是获取不到项目路径,所以我使用固定路径的方法来实现。
- 以当前日期命令脚本文件名方式,实现备份功能。
二、 SSH数据库备份与还原工具类配合Spring定时器一块使用
(定时器配置可以详细查看上一篇博客日志)
/**
* 根据属性文件的配置导出指定位置的指定数据库到指定位置
* 备份数据库
*
*/
public void export(){
try {
//拼接shell脚本命令字符串
Runtime runtime = Runtime.getRuntime();
//执行shell脚本
System.out.println("数据库备份成功!");
} catch (IOException e) {
System.out.println("数据库备份异常!");
e.printStackTrace();
}
}
/**
* 根据属性文件的配置导出指定位置的指定数据库到指定位置
* 备份数据库
*
*/
public void importSql(String url){
Runtime runtime = Runtime.getRuntime();
// 因为在命令窗口进行mysql数据库的导入一般分三步走,所以所执行的命令将以字符串数组的形式出现
String cmdarray[];
try {
cmdarray = getImportCommand(url);
Process process = runtime.exec(cmdarray[0]);
// 执行了第一条命令登录到mysql
// 进程执行后面的代码
OutputStream os = process.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(os);
// 选择数据库和要放在一起执行
"\r\n"
writer.flush();
writer.close();
os.close();
System.out.println("数据库还原成功!");
} catch (IOException e) {
System.out.println("数据库还原异常!");
e.printStackTrace();
}
}
private String getExportCommand() throws IOException {
InputStream is = DataUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");//加载属性配置文件
Properties properties = new Properties();
properties.load(is);
StringBuffer command = new StringBuffer();
"user");// 用户名
"password");// 用户密码
"databaseName");// 需要导出的数据库名
"host");// 从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
"port");// 使用的端口号
//创建以当前日期为名字的sql脚本文件名字
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
String backUpName = date.format(new Date());
"Url") + "/" +backUpName + ".sql";// 导出路径
// 注意空格
"cmd.exe /cmysqldump -u").append(username)
" -p")
.append(password)
// 密码是用的小p,而端口是用的大P。
" -h").append(host).append(" -P").append(port)
" ").append(exportDatabaseName).append(" -r ")
.append(exportPath);
return command.toString();
}
private String[] getImportCommand(String path) throws IOException {
InputStream is = DataUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");//加载属性配置文件
Properties properties = new Properties();
properties.load(is);
"user");// 用户名
"password");// 用户密码
"databaseName");// 需要导出/入的数据库名
"host");// 从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
"port");// 使用的端口号
"Url");
// 第一步,获取登录命令语句
String loginCommand = new StringBuffer().append("mysql -u")
" -p").append(password).append(" -h")
" -P").append(port).toString();
// 第二步,获取切换数据库到目标数据库的命令语句
String switchCommand = new StringBuffer("use ").append(exportDatabaseName).toString();
// 第三步,获取导入的命令语句
String importCommand = new StringBuffer("source ").append(Url).append(path).toString();
// 需要返回的命令语句数组
String[] commands = new String[] { loginCommand, switchCommand,
importCommand };
return commands;
}
二、 SSH下边数据库备份与还原工具类
l 该方法采用Shell命令,可以方便的实现数据库的备份功能l 查看过上一篇定时器配置的朋友可以发现该类已经放到Spring容器里面了,我们可以利用Spring注入的方式,利用Action请求来调用可以实现实时备份与还原利用Spring定时器,唯一一点是获取不到项目路径,所以我使用固定路径的方法来实现。以当前日期命令脚本文件名方式,实现备份功能。