java智能实现数据库备份

上传人:第*** 文档编号:34046977 上传时间:2018-02-20 格式:DOCX 页数:7 大小:107.92KB
返回 下载 相关 举报
java智能实现数据库备份_第1页
第1页 / 共7页
java智能实现数据库备份_第2页
第2页 / 共7页
java智能实现数据库备份_第3页
第3页 / 共7页
java智能实现数据库备份_第4页
第4页 / 共7页
java智能实现数据库备份_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《java智能实现数据库备份》由会员分享,可在线阅读,更多相关《java智能实现数据库备份(7页珍藏版)》请在金锄头文库上搜索。

1、-原理:MySQL 数据库备份原理: Navicat 等数据库界面软件通用的数据库备份原理就是直接调用 MYSQL 本身的系统命令。MySQL 本身的系统命令:-opt h localhost -user=root -password=admin -lock-all-tables=true -result-file=E:/oes/2221.sql -default-character-set=utf8 oes解析:主机h,用户名-user ,密码password ,锁定所有表-lock-all-tables=true,目标文件-result-file,编码-default-character-

2、set=utf8,数据源 oesJava 中执行系统命令方法:Runtime cmd = Runtime.getRuntime();Process p = cmd.exec(“”); /执行 CMD 指令(String)由于无法确定主机是否配置了 MySQL 环境变量,所以需要最保险的确定 MySQL 中mysqldump 的位置,它存在于 MySQL 安装文件夹得 Bin 目录下,问题就是如何获取 MySQL 的安装目录?-针对于获取 MySQL 的安装目录,我用的是比较笨的方法:解析注册表。找到注册表中 MySQL 的软件信息,里面包含有软件的安装地址,卸载地址,版本号等等基本信息,直接取

3、用它的安装信息就行。软件信息在注册表中的位置:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall软件关联注册表中软件信息: -类 CheckSoftware,解析 MySQL 软件安装地址import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class CheckSoftware /* 遍历注册表,查询MySQL 的注册表关联*/public static String che

4、ck() throws Exception Runtime runtime = Runtime.getRuntime();Process process = null;process = runtime.exec(cmd /c reg query HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream();String string = null;wh

5、ile (string = in.readLine() != null) process = runtime.exec(cmd /c reg query + string+ /v DisplayName);BufferedReader name = new BufferedReader(new InputStreamReader(process.getInputStream();String message = queryValue(string, DisplayName);if (message != null & message.contains(MySQL) String message

6、2 = queryValue(string, InstallLocation);return message2;in.close();process.destroy();return null;/* * 查询出需要的MySQL 服务的安装路径*/private static String queryValue(String string, String method)throws IOException String pathString = ;Runtime runtime = Runtime.getRuntime();Process process = null;BufferedReade

7、r br = null;process = runtime.exec(cmd /c reg query + string + /v + method);br = new BufferedReader(new InputStreamReader(process.getInputStream();br.readLine();br.readLine();/ 去掉前两行无用信息if (pathString = br.readLine() != null) pathString = pathString.replaceAll(method + REG_SZ , ); / 去掉无用信息return pat

8、hString;return pathString;-类 JavaMysql 备份还原数据库import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class JavaMysql /* 备份数据库 1、读取配置文件 2、启动智能查询Mysql安装目录 3、备份数据库为sql文件*/public static void backup(String sql) Properties pros = getPprVue(prop.propert

9、ies);String username = pros.getProperty(username);String password = pros.getProperty(password);CheckSoftware c = null;try System.out.println(MySQL服务安装地址 : +c.check().toString(); catch (Exception e2) e2.printStackTrace();String mysqlpaths;try mysqlpaths = c.check().toString() + bin + ;String database

10、Name = pros.getProperty(databaseName);String address = pros.getProperty(address);String sqlpath = pros.getProperty(sql);File backupath = new File(sqlpath);if (!backupath.exists() backupath.mkdir();StringBuffer sb = new StringBuffer();sb.append(mysqlpaths);sb.append(mysqldump );sb.append(-opt );sb.ap

11、pend(-h );sb.append(address);sb.append( );sb.append(-user=);sb.append(username);sb.append( );sb.append(-password=);sb.append(password);sb.append( );sb.append(-lock-all-tables=true );sb.append(-result-file=);sb.append(sqlpath);sb.append(sql);sb.append( );sb.append(-default-character-set=utf8 );sb.app

12、end(databaseName);System.out.println(cmd指令 :+sb.toString();Runtime cmd = Runtime.getRuntime();try Process p = cmd.exec(sb.toString(); catch (IOException e) e.printStackTrace(); catch (Exception e1) e1.printStackTrace();/* 读取属性文件*/public static Properties getPprVue(String properName) InputStream inpu

13、tStream = JavaMysql.class.getClassLoader().getResourceAsStream(properName);Properties p = new Properties();try p.load(inputStream);inputStream.close(); catch (IOException e) e.printStackTrace();return p;/* 根据备份文件恢复数据库*/public static void load(String filename) Properties pros = getPprVue(prop.propert

14、ies);String root = pros.getProperty(jdbc.username);String pass = pros.getProperty(jdbc.password);String mysqlpaths = c.check().toString() + bin + ;String sqlpath = pros.getProperty(sql);String filepath = mysqlpaths + sqlpath + filename; / 备份的路径地址String stmt1 = mysqlpaths + mysqladmin -u + root + -p + pass+ create finacing; / -p后面加的是你的密码String stmt2 = mysqlpaths + mysql -u + root + -p + pass+ finacing 属性文件: prop.properties,动态配置用户名及密码等基本属性username = root password = adminsql = E:/oes/address=localhostdatabaseName=oes-JVM 内存性能分析

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号