SSH框架实现MYSQL数据库备份与还原
SSH框架实现数据库备份与还原一、 SSH下边数据库备份与还原工具类l 该方法采用Shell命令,可以方便的实现数据库的备份功能查看过上一篇定时器配置的朋友可以发现该类已经放到Spring容器里面了,我们可以利用Spring注入的方式Action请求来调用可以实现实时备份与还原利用Spring定时器,唯一一点是获取不到项目路径,所以我使用固定路径的方法来实现。以当前日
一、 SSH下边数据库备份与还原工具类
- l 该方法采用Shell命令,可以方便的实现数据库的备份功能
- 查看过上一篇定时器配置的朋友可以发现该类已经放到Spring容器里面了,我们可以利用Spring注入的方式
- Action请求来调用可以实现实时备份与还原
- 利用Spring定时器,唯一一点是获取不到项目路径,所以我使用固定路径的方法来实现。
- 以当前日期命令脚本文件名方式,实现备份功能。
二、 SSH数据库备份与还原工具类配合Spring定时器一块使用
(定时器配置可以详细查看上一篇博客日志)
/**
* 根据属性文件的配置导出指定位置的指定数据库到指定位置
* 备份数据库
*
*/
public void export(){
try {
String command = getExportCommand();//拼接shell脚本命令字符串
Runtime runtime = Runtime.getRuntime();
runtime.exec(command);//执行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);
// 选择数据库和要放在一起执行
writer.write(cmdarray[1] + "\r\n" + cmdarray[2]);
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();
String username = properties.getProperty("user");// 用户名
String password = properties.getProperty("password");// 用户密码
String exportDatabaseName = properties.getProperty("databaseName");// 需要导出的数据库名
String host = properties.getProperty("host");// 从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
String port = properties.getProperty("port");// 使用的端口号
//创建以当前日期为名字的sql脚本文件名字
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
String backUpName = date.format(new Date());
String exportPath = properties.getProperty("Url") + "/" +backUpName + ".sql";// 导出路径
// 注意空格
command.append("cmd.exe /cmysqldump -u").append(username)
.append(" -p")
.append(password)
// 密码是用的小p,而端口是用的大P。
.append(" -h").append(host).append(" -P").append(port)
.append(" ").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);
String username = properties.getProperty("user");// 用户名
String password = properties.getProperty("password");// 用户密码
String exportDatabaseName = properties.getProperty("databaseName");// 需要导出/入的数据库名
String host = properties.getProperty("host");// 从哪个主机导出数据库,如果没有指定这个值,则默认取localhost
String port = properties.getProperty("port");// 使用的端口号
String Url = properties.getProperty("Url");
// 第一步,获取登录命令语句
String loginCommand = new StringBuffer().append("mysql -u")
.append(username).append(" -p").append(password).append(" -h")
.append(host).append(" -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定时器,唯一一点是获取不到项目路径,所以我使用固定路径的方法来实现。
- 以当前日期命令脚本文件名方式,实现备份功能。
更多推荐
所有评论(0)