数据库备份还原
来源:互联网 发布:异次元的软件世界 编辑:程序博客网 时间:2024/06/10 00:00
Java对MySql数据库进行备份与还原
数据库的备份与还原对项目而言是无疑是对安全考虑的好方法,MySQL 数据库备份原理: Navicat等数据库界面软件通用的数据库备份原理就是直接调用MYSQL本身的系统命令。
那么Java是如何来实现备份与还原mysql的呢:这里JavaApi里面给出了Runtime.getRuntime().exe("")方法,它可以执行系统目录下bin下的cmd命令比如windows下的
mysql.exe或者linux下的mysql/bin/mysql命令
MySql数据库备份
1 public static String comman="C:/Program Files/MySQL/MySQL Server 5.5/bin/mysql.exe -uroot -proot test"; 2 public static void back(String mySqlBackupName,String mysqlBackupPath, String command){ 3 4 String fPath=mysqlBackupPath+"/"+new Date().getTime()+".sql"; 5 6 Runtime rt = Runtime.getRuntime(); 7 try { 8 Process child = rt.exec(command); 9 InputStream in = child.getInputStream();10 InputStreamReader input = new InputStreamReader(in,"utf8");11 12 String inStr;13 StringBuffer sb = new StringBuffer("");14 String outStr;15 16 BufferedReader br = new BufferedReader(input);17 while ((inStr = br.readLine()) != null) { 18 sb.append(inStr + "\r\n"); 19 } 20 outStr = sb.toString(); 21 22 FileOutputStream fout = new FileOutputStream(fPath);23 OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); 24 writer.write(outStr);25 writer.flush(); 26 27 in.close(); 28 input.close(); 29 br.close(); 30 writer.close(); 31 fout.close(); 32 33 logger.info("MYSQL备份成功");34 } catch (IOException e) {35 e.printStackTrace();36 }37 }
MySql数据库备份(这里用Servlet实现)
1 private static final Logger logger = Logger.getLogger(CBSDAddServlet.class); 2 public static String fPath="D:/apache-tomcat-6.0.30/webapps/test/databaseSql/2014-04-15.sql"; 3 public static String comman=" C:/Program Files/MySQL/MySQL Server 5.5/bin/mysql -uroot -proot --default-character-set=utf8 test "; 4 5 private static final long serialVersionUID = -3323607254010948405L; 6 7 public void doGet(HttpServletRequest request, HttpServletResponse response) 8 throws ServletException, IOException { 9 10 doPost(request, response);11 }12 13 public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {14 15 boolean flag=false;16 try {17 /***18 * 关闭当前项目与数据库的连接19 * 这里很重要,如果是hibernate等连接池的session与数据库保持连接的话,因为还原会直接覆盖当前的数据库20 * 而覆盖之前当前的session与数据库保持了一份连接,所以点击备份时会直至卡在那里...这里得 关闭closeSession();操作21 * ***/22 BaseDao.closeSession(new BaseDao().getSession());23 hy(request, response);24 flag = true;25 logger.info("还原成功");26 } catch (Exception e) {27 e.printStackTrace();28 logger.info("开始失败...");29 }30 31 response.setCharacterEncoding("UTF-8");32 response.getWriter().print(flag);33 }34 35 36 public void hy(HttpServletRequest request, HttpServletResponse response) throws IOException{37 Runtime rt = Runtime.getRuntime(); 38 Process child = rt.exec(comman);39 40 InputStreamReader in =new InputStreamReader(new FileInputStream(fPath),"UTF-8");41 BufferedReader br =new BufferedReader(in);42 43 String inStr =null;44 StringBuffer sb = new StringBuffer("");45 String outStr;46 while((inStr=br.readLine())!=null){47 sb.append(inStr + "\r\n"); 48 }49 outStr = sb.toString();50 51 logger.info(outStr);52 53 OutputStream out = child.getOutputStream();54 OutputStreamWriter writer =new OutputStreamWriter(out,"UTF-8");55 writer.write(outStr);56 writer.flush();57 58 out.flush();59 out.close(); 60 br.close(); 61 writer.close(); 62 logger.info("数据回复成功!");63 }
实例2
java实现mysql数据库的备份及还原
备份:
123456789101112131415161718192021222324252627282930313233343536373839404142public
static
void
backup() {
try
{
Runtime rt = Runtime.getRuntime();
// 调用 调用mysql的安装目录的命令
Process child = rt
.exec(
"e:\\MySQL\\bin\\mysqldump -h localhost -uroot -p123 db_name"
);
// 设置导出编码为utf-8。这里必须是utf-8
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();
// 控制台的输出信息作为输入流
InputStreamReader xx =
new
InputStreamReader(in,
"utf-8"
);
// 设置输出流编码为utf-8。这里必须是utf-8,否则从流中读入的是乱码
String inStr;
StringBuffer sb =
new
StringBuffer(
""
);
String outStr;
// 组合控制台输出信息字符串
BufferedReader br =
new
BufferedReader(xx);
while
((inStr = br.readLine()) !=
null
) {
sb.append(inStr +
"\r\n"
);
}
outStr = sb.toString();
// 要用来做导入用的sql目标文件:
FileOutputStream fout =
new
FileOutputStream(
"c:\\test.sql"
);
OutputStreamWriter writer =
new
OutputStreamWriter(fout,
"utf-8"
);
writer.write(outStr);
writer.flush();
in.close();
xx.close();
br.close();
writer.close();
fout.close();
System.out.println(
""
);
}
catch
(Exception e) {
e.printStackTrace();
}
}
还原:
12345678910111213141516171819202122232425262728293031public
static
void
restore(String databaseName) {
try
{
Runtime runtime = Runtime.getRuntime();
Process process = runtime
.exec(
"e:\\MySQL\\bin\\mysql.exe -hlocalhost -uroot -p123 --default-character-set=utf8 "
+ databaseName);
OutputStream outputStream = process.getOutputStream();
BufferedReader br =
new
BufferedReader(
new
InputStreamReader(
new
FileInputStream(
"C:\\test.sql"
),
"utf-8"
));
String str =
null
;
StringBuffer sb =
new
StringBuffer();
while
((str = br.readLine()) !=
null
) {
sb.append(str +
"\r\n"
);
}
str = sb.toString();
// System.out.println(str);
OutputStreamWriter writer =
new
OutputStreamWriter(outputStream,
"utf-8"
);
writer.write(str);
writer.flush();
outputStream.close();
br.close();
writer.close();
}
catch
(UnsupportedEncodingException e) {
e.printStackTrace();
}
catch
(FileNotFoundException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
}
阅读全文
0 0
- 数据库备份还原
- asp 备份还原数据库
- 备份还原数据库
- 还原差异备份数据库
- 备份与还原数据库
- 备份和还原数据库
- 数据库备份与还原
- 远程数据库备份还原
- SQLDMO备份,还原数据库
- mysqldump备份还原数据库
- Delphi备份/还原数据库
- 备份和还原数据库
- 数据库备份和还原
- 数据库备份与还原
- C#备份还原数据库
- oracle数据库备份还原
- 备份还原数据库
- 数据库备份与还原
- 代理IP,爬微信公众号的网页
- 反射(1)——构造方法
- 【剑指offer】题39:二叉树的深度
- POJ
- 浅谈特征工程(一)
- 数据库备份还原
- POJ
- keras可视化pydot graphviz问题
- 翻转句子
- 懵懵懂懂的MVC框架
- POJ-3667:Hotel(线段树区间合并)
- 动态规划
- http协议相关介绍
- 安卓5.0.2源码编译错误