`

java web 实现mysql 数据库备份、恢复

 
阅读更多

如题,由于项目需要,研究并实现了java web的 mysql数据库的备份、下载、恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来:

 

背景介绍:

  • window 7系统
  • mysql 5.7
  • eclipse
  • spring mvc
  • tomcat 7
  • jdk 1.7

先上代码:

     使用mysql的mysqldump 命令进行备份。 

/**
	 * Java代码实现MySQL数据库备份
	 * 
	 * @author lgc
	 * @param hostIP
	 *            MySQL数据库所在服务器地址IP
	 * @param userName
	 *            进入数据库所需要的用户名
	 * @param password
	 *            进入数据库所需要的密码
	 * @param savePath
	 *            数据库导出文件保存路径
	 * @param fileName
	 *            数据库导出文件文件名
	 * @param databaseName
	 *            要导出的数据库名
	 * @return 返回true表示导出成功,否则返回false。
	 */
	public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath,
			String fileName, String databaseName) throws InterruptedException {
		boolean fa = false;
		File saveFile = new File(savePath);
		if (!saveFile.exists()) {// 如果目录不存在
			saveFile.mkdirs();// 创建文件夹
		}
		if (!savePath.endsWith(File.separator)) {
			savePath = savePath + File.separator;
		}

		PrintWriter printWriter = null;
		try {
			printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));
			String backup = "mysqldump -h" + hostIP + " -u" + userName + " -p" + password + " " + databaseName
					+ " --set-charset=UTF8 ";
			String path = "E:\\";//这里是你复制的mysqldump.exe所在的文件目录下
			String commad = "cmd /c " + path + backup + ">" + savePath + fileName;
			System.out.println(commad);
			Runtime.getRuntime().exec(commad);
			fa = true;
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (printWriter != null) {
				printWriter.close();
			}
		}
		return fa;
	}

 

恢复备份:

// 数据库恢复
	public static void load(String filename) {

		 try {
			 String path = "E:\\";
				String commad = "cmd /c " + path+"mysql -u root -pcisoft jeecms "; 
	            Runtime rt = Runtime.getRuntime();
	            // 调用 mysql 的 cmd:
	            Process child = rt.exec(commad);
	            OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
	            String inStr;
	            StringBuffer sb = new StringBuffer("");
	            String outStr;
	            BufferedReader br = new BufferedReader(new InputStreamReader(
	                    new FileInputStream(filename), "utf8"));
	            while ((inStr = br.readLine()) != null) {
	                sb.append(inStr + "\r\n");
	            }
	            outStr = sb.toString();

	            OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
	            writer.write(outStr);
	            // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
	            writer.flush();
	            // 别忘记关闭输入输出流
	            out.close();
	            br.close();
	            writer.close();

	            System.out.println("/* Load OK! */");

	        } catch (Exception e) {
	            e.printStackTrace();
	        }

	}

 

 

坑一:

  • mysql 安装在c盘默认路径下,Program Files 文件夹名称之间有空格,导致程序明明运行一切正常,就是无法导出数据,文件大小始终为0kb。
       解决办法:
       1.把mysql 安装目录下-》bin文件夹-》mysqldump.exe ,复制到项目或者任意文件夹,然后程序强制应用 复制后的mysqldump.exe 执行即可
       2.同理mysql安装目录下的mysql.exe,也复制到项目或任意文件夹,然后程序使用时,使用复制的文件的所在路径下即可

       

 
分享到:
评论

相关推荐

    jsp备份mysql数据库,用属性文件操作

    在JSP中执行MySQL数据库备份,通常涉及创建一个Servlet或者JSP页面,该页面将调用Java代码来执行备份操作。 `mysql_util.java`可能是一个包含数据库操作逻辑的类文件。这个类可能包含了连接数据库、执行SQL语句...

    商城web源码+mysql数据库。

    首先,我们看到标题提及了"商城web源码+mysql数据库",这意味着项目包含了前端页面代码以及后端数据库设计。MySQL是一种广泛使用的开源关系型数据库管理系统,对于Web应用来说,它是存储和管理用户数据的关键组件。...

    图解WINDOWS下如何安装MYSQL数据库

    MySQL 提供了多种应用程序接口,例如 MySQL Connector/J,用于 Java 应用程序的数据库连接。可以在 MySQL 的官方网站上下载相应的驱动程序。 本文详细介绍了如何在 WINDOWS 平台上安装和配置 MySQL 数据库,包括...

    Java代码 MySql导出到SqlLite

    【Java代码 MySql导出到SqlLite】是一种技术实践,它涉及到使用Java编程语言来实现一个功能,该功能能够将MySQL数据库中的数据高效地导出到SQLite数据库文件中。这一过程通常用于数据迁移、备份或者在不同环境之间...

    java图书管理系统MySql数据库

    总的来说,Java图书管理系统MySql数据库是一个涵盖多方面技术的项目,涉及到Java后端开发、MySQL数据库管理、Web前端设计、以及系统架构和安全策略等多个知识点。通过这样的系统,可以高效地管理图书信息,满足用户...

    Java连接mysql数据库攻略.pdf

    Java连接MySQL数据库是开发Web应用或后端服务时常见的任务,这个攻略主要涵盖了以下几个关键知识点: 1. **软件下载**: - MySQL数据库:这里提到的是4.1.11版本,但通常推荐使用更稳定且功能更丰富的最新版本。 ...

    mysql数据库技术的应用课件

    除了基本的CRUD(创建、读取、更新、删除)操作,你还将学习到如何利用索引提升查询速度,如何进行数据库备份和恢复,以及如何进行性能调优,例如通过EXPLAIN分析查询计划,优化查询语句,避免全表扫描。 在安全...

    mysql.rar_MYSQL数据库_MySQL软件_SQL软件

    3. 可靠性:通过事务处理、备份和恢复机制确保数据的完整性。 4. 扩展性:支持多线程和分布式架构,易于扩展到多台服务器。 5. 易用性:提供了直观的图形化管理工具,如MySQL Workbench,简化了数据库管理和开发过程...

    jira使用MySql数据库

    修改jira安装目录下的WEB-INF/classes/entityengine.xml文件,添加MySql数据库连接信息。例如: ``` <datasource name="defaultDS" field-type-name="mysql" ...> ``` 六、添加MySql驱动包 将MySql驱动包放入jira...

    Java+JSP+Mysql实现Web学校教材管理系统

    本文将详细解析一个利用Java、JSP(Java Server Pages)和MySQL数据库技术构建的Web学校教材管理系统。该系统旨在为学校提供便捷的教材管理平台,实现管理员对教材资源的高效管理和维护。 首先,我们要理解这个系统...

    MySQL数据库详细介绍pdf(22)

    还有复制工具,帮助用户在多个MySQL数据库间同步数据,实现数据备份和高可用性设置。 数据转换工具是另一个重要的类别,它们帮助用户将数据在不同格式之间转换,以适应MySQL或者从MySQL导出。例如,可以将.dbf文件...

    基于java和mysql数据库设计的学生宿舍管理系统_Java_mysql_程序设计

    【标题】"基于Java和MySQL数据库设计的学生宿舍管理系统"是一个典型的软件开发项目,它结合了后端编程语言Java与关系型数据库管理系统MySQL,用于管理和优化学生宿舍的相关事务。这个系统虽然采用控制台交互方式,但...

    java 图书馆管理系统 mysql

    本系统以Java编程语言为基础,结合MySQL数据库,构建了一个基于B/S(Browser/Server,浏览器/服务器)架构的Web应用程序。这种结构使得用户可以通过网页浏览器进行操作,大大降低了系统的使用门槛。 1. Java技术...

    mysql数据库

    8. **备份与恢复**:MySQL支持多种备份策略,如热备份、增量备份、逻辑备份等,确保数据在灾难情况下的可恢复性。 9. **事务处理**:MySQL支持ACID(原子性、一致性、隔离性、持久性)事务,保证数据的一致性。 10...

    mysql数据库以及安装教程

    MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL),在Web应用程序开发中扮演着重要角色。以下是一份详细的MySQL安装教程,旨在帮助初次接触数据库的新手顺利安装并理解MySQL的...

    Java web转盘抽奖系统 通过MySQL进行连接,可以通过数据库修改中奖信息,有兴趣的可以下载

    这是一个基于Java Web技术开发的转盘抽奖系统,它利用了MySQL数据库进行数据存储和管理。在这样的系统中,用户可以通过前端界面参与抽奖活动,而抽奖的结果和中奖信息则存储在后端的MySQL数据库中。下面我们将深入...

    逐步精通mysql数据库

    《逐步精通MySQL数据库》 MySQL是一种广泛使用的开源关系型数据库管理系统,它以其高效、稳定和易用性在各种规模的企业和项目中占据了重要的地位。学习MySQL数据库是IT行业的必备技能之一,无论你是初学者还是寻求...

    基于ssh框架的mysql数据库导出脚本

    总结来说,"基于SSH框架的mysql数据库导出脚本"涵盖了Java Web开发中的数据库操作、脚本编写以及数据管理等多个方面。理解并掌握这些知识点对于开发者在实际工作中进行数据备份和恢复有着重要意义。

    web在线考试系统全源码和mysql数据库+在线考试报告

    最后,"exam.sql"文件很可能是数据库的备份或导入文件,用户可以利用它快速恢复或建立一个与原系统一致的数据库环境。而"exam"文件名可能代表其他相关资源,如系统配置文件、静态资源或者特定的测试数据。 总之,这...

    gusetSys-java.rar_java 数据库_jsp备份

    4. **数据库备份与恢复**:这是数据安全的重要环节。通过定期备份,可以在数据丢失或系统故障时恢复数据。这可能涉及到SQL脚本的编写,以及备份策略的制定。 5. **操作员管理**:涉及用户账户的创建、修改、删除和...

Global site tag (gtag.js) - Google Analytics