`
duinibuhaome
  • 浏览: 41334 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

手动备份mysql数据库

阅读更多

/**

*paths  文件路径 

*user    数据库用户名

*pass   数据库密码

*database 数据库名

*/

public static boolean backup(String paths,String user,String pass,String database) {//备份  
     try {  
         System.out.println(paths);
         Runtime rt = Runtime.getRuntime();
         String mysql="mysqldump -u "+user+" ";
         if(pass=="")
          mysql +=""+database+""; 
         else
          mysql += "-p "+pass+" "+database+"";  
         // 调用 mysql 的 cmd: 
         System.out.println(mysql);
         Process child = rt .exec("cmd /c "+mysql);// 设置导出编码为utf8。这里必须是utf8   
         // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行  
         InputStream in = child.getInputStream();// 控制台的输出信息作为输入流  
         System.out.println(in.read()+"22-----------------------");
         InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码  
         System.out.println(xx.read()+"==========");
         String inStr;  
         StringBuffer sb = new StringBuffer("");  
         String outStr;  
         // 组合控制台输出信息字符串  
         BufferedReader br = new BufferedReader(xx); 
         System.out.println(br.readLine().toString()+"--=-==-=-=-=-=-=");
         while ((inStr = br.readLine()) != null) {  
             sb.append(inStr + "\r\n");
             System.out.println(inStr+br.readLine().toString()+"}}}}}}}}}}}}}}");
         }  
         outStr = sb.toString();   
         // 要用来做导入用的sql目标文件:  
         FileOutputStream fout = new FileOutputStream( paths);  
         OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");  
         writer.write(outStr);  
         System.out.println(outStr.toString()+"(((((((");
         // 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免  
         writer.flush();  
  
         // 别忘记关闭输入输出流  
         in.close();  
         xx.close();  
         br.close();  
         writer.close();  
         fout.close();                     
         String error="备份成功!";      
         StrError = (new String(error.getBytes("ISO-8859-1"),"UTF-8"));    
         return true;
     } catch (Exception e) {  
         e.printStackTrace();  
         StrError=StrError+"failure!<br/>";
         return false;
     }  
 }

 

 

 

 

 

 

 

 

 

 

/**

*paths  文件路径

*user   用户名

*pass  密码

*database 数据库名称
*/

 public static boolean load(String paths,String user,String pass,String database) {//还原  
   
     try {  
         //String fPath = "c:/db.sql";  
         Runtime rt = Runtime.getRuntime();  
         // 调用 mysql 的 cmd:
         String sqlStr="mysql ";
         if(pass=="")
         sqlStr+="-u "+user+" "+database+" ";
         else
         sqlStr+="-u "+user+" -p "+pass+" "+database+" "; 
         Process child = rt.exec(sqlStr);  
         OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流  
         String inStr;  
         StringBuffer sb = new StringBuffer("");  
         String outStr;  
         BufferedReader br = new BufferedReader(new InputStreamReader(  
                 new FileInputStream(paths), "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! */");  
         StrError=StrError+"备份成功!<br/>".getBytes("gb2312");  
     } catch (Exception e) {
         e.printStackTrace(); 
         StrError=StrError+"failure!<br/>";
         return false;
     }  
     return true;  
 }

 

 

 

下面是调用备份方法的的类

/**
  * 添加数据
  */
 public String addCopyDatabase() {
  String path=ServletActionContext.getRequest().getRealPath("/backdata");
  Date date=new Date();
  SimpleDateFormat sdf=new SimpleDateFormat("yyMMddHHmmss");
  SimpleDateFormat sdfs=new SimpleDateFormat("yy-MM-dd HH:mm:ss");
  String paths=path+"\\"+sdf.format(date)+".sql";
  //System.out.println(paths);
  try {
   if(BackUp.backup(paths, user, pass, database))
   {
       }else
   {
  return SUCCESS;
 }

 

 

 

/**
  * 还原数据库文件
  * @return
  */
 public String revertCopyDatabase()
 {
  try {
   HttpServletResponse response = ServletActionContext.getResponse();   
   PrintWriter out = response.getWriter();
   copyDatabase = copyDatabaseService.findCopyDatabase(this.id);
   String paths=copyDatabase.getCopyPath();
   BackUp.load(paths, user, pass, database);
   if(BackUp.load(paths, user, pass, database))
    result=3;
   else
    result=4;
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return SUCCESS;
 }

 

 

自己调用后面两个方法就行了

切记这里是备份的本机数据库、

 

 

0
0
分享到:
评论

相关推荐

    java 手动备份数据库

    本文将详细介绍如何使用Java进行手动备份MySQL数据库。 首先,我们需要了解Java中用于数据库操作的API,JDBC(Java Database Connectivity)是Java连接数据库的标准接口。要备份MySQL数据库,我们需要使用JDBC驱动...

    Windows下RAR自动备份MySQL数据库

    此批处理,是为一位朋友写的在Windows下自动备份Mysql数据库,今天共享出来,加强了一些功能。和改进了获取数据库列表的方式。 此批处理脚本的功能: 在配置正确的情况下,如果直接运行脚本,将备份指定MySQL数据库...

    自动备份mysql数据库

    ### 自动备份MySQL数据库知识点详解 #### 一、概述 在IT行业中,数据备份是一项非常重要的任务,尤其对于运行MySQL数据库的应用系统来说更是如此。本文将详细介绍如何通过编写批处理脚本来实现MySQL数据库的自动...

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    ### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...

    Mysql数据库定时备份

    在本文中,我们将介绍三种不同的Mysql数据库定时备份方法,包括手动备份、使用定时任务备份和Java代码添加监听备份。 手动备份 手动备份是最简单的一种备份方法,只需要使用mysqldump命令将数据库备份到文件中。...

    Windows下MySql自动备份脚本(有备份日志,且可以删除历史备份)

    此批处理,是为一位朋友写的在Windows下自动备份Mysql数据库,今天共享出来,加强了一些功能。和改进了获取数据库列表的方式。 此批处理脚本的功能: 在配置正确的情况下,如果直接运行脚本,将备份指定MySQL数据库...

    如何在linux下实现mysql数据库每天自动备份 txt

    ### 如何在Linux下实现MySQL数据库每天自动备份 在Linux环境下进行MySQL数据库的日常自动备份是一项重要的维护工作,它能够确保数据的安全性与完整性。本文将详细介绍如何通过编写Shell脚本并结合Cron定时任务来...

    linux中如何备份数据库.doc

    这个过程不仅教会了如何手动备份MySQL数据库,更关键的是展示了如何设置自动化备份,以确保即使在无人值守的情况下也能定期进行数据备份。这有助于预防硬件故障、软件错误或人为误操作导致的数据丢失。通过调整脚本...

    windows下备份mysql数据库脚本.bat文件

    为了确保数据的安全和可恢复性,定期备份MySQL数据库至关重要。本文将深入探讨如何创建并使用一个批处理(.bat)脚本来自动化这个过程。 首先,我们需要了解批处理脚本的基础知识。批处理脚本是一种在DOS或Windows...

    定时备份MySQL数据库.pdf

    定时备份MySQL数据库是确保数据安全的重要环节,尤其是在可能发生数据丢失或损坏的情况下,定期备份能够保证业务的连续性和数据的完整性。 MySQL本身并不内置定时备份功能,但可以通过第三方工具或系统级别的任务...

    易语言MYSQL数据库备份还原器

    《易语言MYSQL数据库备份还原器》是一款专为易语言编程环境设计的实用工具,它能够帮助用户方便地对MYSQL数据库进行备份与恢复操作。这款软件的核心功能包括数据库的备份和还原,以及目录复制,旨在提高数据库管理的...

    备份mysql数据库到指定路径

    标题“备份mysql数据库到指定路径”涉及到的是MySQL数据库管理和数据安全的重要操作,即如何创建数据库的备份并将其存储在特定的文件位置。在IT行业中,数据是企业的核心资产,定期备份是防止数据丢失的关键措施,...

    mysql数据库定时备份手册

    ### MySQL数据库定时备份知识点 #### 一、MySQL数据库备份的重要性 在现代企业的信息化管理中,数据的安全性至关重要。定期对MySQL数据库进行备份是一项基础而重要的维护工作,它可以帮助企业防止因硬件故障、软件...

    Linux自动备份MySQL数据库的实用方法

    对于使用Linux系统和MySQL数据库的环境,手动备份可能会出现疏漏,因此自动备份是明智的选择。本篇文章将详细讲解如何在Linux环境下实现MySQL数据库的自动备份。 首先,我们需要创建一个用于存放备份文件的目录。在...

    Linux自动备份MySQL数据库并上传到FTP服务器上shell脚本

    对于需要定期备份MySQL数据库的企业或个人来说,该脚本能够有效地提高工作效率,减少手动操作带来的错误风险。 #### 二、脚本结构分析 ##### 1. 基础配置参数设置 ```bash dbuser=root dbpasswd= dbserver=...

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

    本文将详细介绍如何在 WINDOWS 平台上安装和配置 MySQL 数据库,包括下载、安装、配置和启动 MySQL 服务器。 一、MySQL 下载 MySQL 是一个开源的关系数据库管理系统,广泛应用于 web 开发和企业级应用中。 MySQL ...

    MySql 数据库备份批处理,.bat脚本,Windows任务计划调用执行的

    附件为两个.bat脚本文件,用于在Windows下备份MySQL数据库,一个是备份数据库文件,另一个是将数据库导出sql脚本。需要自己修改数据库名称,备份到sql脚本的,需要自己手动创建好路径文件夹。这两个批处理文件都是...

    mysql 自动备份数据库脚本

    MySQL数据库在日常运营中起着至关重要的作用,因此定期备份是确保数据安全的重要步骤。"mysql 自动备份数据库脚本" 提供了一种自动化的方法,通过Windows的定时任务服务(taskschd.msc)来定期执行数据库的备份,...

    mysql_备份还原,基本操作,双机热备,数据同步,远程连接 文档集合

    备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump -–add-drop-table -uusername -ppassword databasename &gt; backupfile.sql 直接将MySQL数据库压缩备份 ...

Global site tag (gtag.js) - Google Analytics