`
wangjie2013
  • 浏览: 172721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用java实现自动备份mysql数据库

阅读更多

       Last modified:2013-05-02 16:55:01

      **********************************************

       在实际应用中,定时备份数据库是一件非常重要的工作,下面是关于利用java程序实现数据库自动调用的方法,其实也不一定非要用java语言了,只要原理会了,大家大可使用其他语言来实现。话不多说,下面就来演示一下如何自动备份mysql下的abc数据库

 

1,在java API中为我们提供了一个Runtime类,它可以用来调用一些程序,比如notepad.exe,cmd.exe...

具体怎么回事,想了解的同学去看API吧,下面是实现代码:Backup.java

 

import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.IOException;
import java.io.PrintStream;

public class Backup 
{
	public static void main(String[] args) 
	{
		Runtime runtime = Runtime.getRuntime();
		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
		String currentTime = dateFormat.format(calendar.getTime());
		Process p = null;
		PrintStream print = null;
		StringBuilder buf = new StringBuilder();
		for(String a : args){
			buf.append(a);
			buf.append(" ");
		}
		String databases = buf.toString();
		
		try{
			p = runtime.exec("cmd /c mysqldump -uroot -p1234 -B "+databases+">"+currentTime+".sql.bak");
		}catch (IOException e){
			if( p != null ){
				p.destroy();
			}
			try{
				print = new PrintStream(currentTime+"_backup_err.log");
				dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
				currentTime = dateFormat.format(calendar.getTime());
				print.println(currentTime+"  backup failed.");
				e.printStackTrace(print);
				print.flush();
			}catch (IOException e2){

			}finally{
				if(print!=null){
					print.close();
				}
			}
		}
	}
}

 

2,将以上java程序编译后得到Backup.class文件;

 

 

 3,创建批处理文件mytask.bat: 

@echo off
cd c:\backup_wj
rem 这里提倡使用绝度路径,并且如果绝度路径中有空格,记得用
rem 引号将路径括起来!
rem 可以将abc替换为其他数据库,多多个数据库,并用空格隔开
"D:\Program Files\Java\jdk1.6.0_31\bin\java.exe" Backup abc

 

 3.1:根据评论我又发现了一个新的方法,不需要使用java,直接写一个批处理文件就可以实现自动备份功能,读者可以直接使用下面的批处理文件代替原来的批处理文件,不需要在使用java了,然后按照下面的步骤制订计划任务就可以了,代码如下:

mysqldump -uroot -p1234 -B abc > %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql.bak

  

4,将Backup.class、mytask.bat放到同一个目录下,比如我就放在了c:\backup_wj目录下

 

 

5,在win7下配置任务计划,下面照着步骤一步一步走就行了:

 

 

5.1:在控制面板下找到“管理工具”——》“任务计划程序”



 



 

5.2:选择“任务计划程序库”——》“创建基本任务”


 

5.3:填写任务名称和描述



 

 

5.4:下面根据向导的描述操作就可以了;

 



 

 



 

5.5:点击“浏览”选择批处理文件“mytask.bat”;

 



 

 



 

 

 

 

 

5.6:点击“完成”后,选中autoBackup,点击“运行”测试一下:

 



 

是不是有一个黑窗口一闪而过,好的那么打开你存放backup.bat的目录看一看,是不是生成了一个备份文件呢?

下面是我的,不过我们的备份文件已经生成了4次,从文件名就可以看出生成的时间。



 

那么其中的原理大家都会了吧,其实就是让我们的操作系统定时去执行一个批处理文件“Backup.bat”,而这个批处理文件会去执行一个.class文件,这是一个java可执行文件,它会调用runtime.exec()方法,在命令行下执行一段命令,这段命令就是备份数据库的命令。

注意:对于备份的时间,我们可以设置得更加精细,通过“编辑触发器”中的“重复任务间隔”我们可以精确到每5分钟重复执行一次。具体怎么设置大家可以根据实际情况来设置。



 

  • 大小: 65.5 KB
  • 大小: 53.9 KB
  • 大小: 79.5 KB
  • 大小: 39 KB
  • 大小: 34.2 KB
  • 大小: 30.9 KB
  • 大小: 31.8 KB
  • 大小: 34.1 KB
  • 大小: 52.6 KB
  • 大小: 36.3 KB
  • 大小: 48.2 KB
  • 大小: 64.3 KB
  • 大小: 44.2 KB
  • 大小: 83.7 KB
9
7
分享到:
评论
12 楼 hiskyrisa 2013-05-06  
虽然高手们提出来更好的方法,但楼主愿意动手实践,不是坏事啊,稍微鼓励一下嘛,别一杆子捅死。
11 楼 luciferdevil 2013-05-03  
看着蛋都碎了
10 楼 wangjie2013 2013-05-03  
ileson 写道
at 14:50 /every:M,T,W,Th,F,S,Su  e:\backup.bat

我试了一下 没有备份成功。不知道为什么,不要说备份,连记事本都打不开。百度了语法也是对的,不知道哪里错了
9 楼 ileson 2013-05-03  
at 14:50 /every:M,T,W,Th,F,S,Su  e:\backup.bat
8 楼 ileson 2013-05-03  
at 14:50 /every:M,T,W,Th,F,S,Su  e:\backup.bat
7 楼 kjj 2013-05-03  
如果是java,我以为你要一条条读取,原来回头来调用mysqldump ,直接at搞定算了!
6 楼 wangjie2013 2013-05-02  
freezingsky 写道
mysql自身就可以实现了,实在没必要用其他的任何语言来附加,有种多余的感觉 。

mysql提供指令自动备份了吗?怎么做呀??
5 楼 freezingsky 2013-05-02  
mysql自身就可以实现了,实在没必要用其他的任何语言来附加,有种多余的感觉 。
4 楼 wangjie2013 2013-05-02  
RamosLi 写道
一行命令就能搞定: at xx:xx /every:date mysqldump xxx
命令格式自己查吧 at/?

那么如果要实现每天多次备份是不是执行多次at命令,更改为不同的时间就可以了呀?
还有,,,,怎么停止呢?
3 楼 RamosLi 2013-05-02  
一行命令就能搞定: at xx:xx /every:date mysqldump xxx
命令格式自己查吧 at/?
2 楼 wangjie2013 2013-05-02  
cgs1999 写道
使用java有点多余,其实可以新建一个批处理文件backup.bat,内容如下:

mysqldump -uroot -p1234 -B abc>%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql.bak


同样使用系统的“计划任务”实现定时备份


哈哈 你还真想的出来!哈哈 我本来也想过看看有系统有没有提供获取完整时间的方法,就查到date和time,不过没想到你拼出来了,哈哈。
1 楼 cgs1999 2013-05-02  
使用java有点多余,其实可以新建一个批处理文件backup.bat,内容如下:

mysqldump -uroot -p1234 -B abc>%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql.bak


同样使用系统的“计划任务”实现定时备份

相关推荐

    使用java自动备份mysql数据库

    在实际应用中,定时备份数据库是一件非常重要的工作,下面是关于利用java程序实现数据库自动调用的方法,其实也不一定非要用 java语言了,只要原理会了...话不多说,下面就来演示一下如何自动备份mysql下的abc数据库:

    java备份mysql数据库

    标题“Java备份MySQL数据库”指的是使用Java编程语言来创建一个程序,该程序能够对MySQL数据库进行备份操作。这种备份通常涉及导出数据库的结构和数据,以便在需要时可以恢复到某个特定时间点的状态。在Java中实现这...

    自动备份数据库java源码

    标题中的“自动备份数据库java源码”指的是使用Java编程语言编写的一种程序,它的主要功能是自动化执行数据库的备份任务。数据库备份是数据保护的重要环节,它可以在数据丢失或系统故障时恢复数据,确保业务连续性。...

    mysqldump java远程备份mysql数据库 cmd备份

    如果你的项目中已经使用了Java,那么可以通过Java代码调用mysqldump命令来实现自动化备份。首先,需要引入一个能够执行系统命令的库,如Apache Commons Exec。以下是一个简单的示例: ```java import org.apache....

    通过Java代码备份Mysql数据库Demo

    这个“通过Java代码备份Mysql数据库Demo”是一个简单的示例,旨在帮助开发者快速理解和实践这一功能,从而节省学习和调试的时间。 首先,我们需要了解Java中用于连接MySQL数据库的JDBC(Java Database Connectivity...

    Java实现对Mysql数据库的备份还原

    本文将深入探讨如何使用Java语言来实现MySQL数据库的备份与还原功能,这是一个跨平台的解决方案,无论是在Windows还是Linux环境下都能正常工作。 首先,让我们了解备份和还原的基本概念。数据库备份是为了防止数据...

    java备份与恢复mysql数据库源码

    接下来,我们来看如何编写Java代码来备份MySQL数据库。这通常涉及到执行`mysqldump`命令,这是一个MySQL提供的工具,可以生成数据库或表的SQL语句。在Java中,我们可以使用`ProcessBuilder`类来执行系统命令。以下是...

    java实现mysql数据库的表导出到excel文件

    本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 首先,我们需要了解的是Java与数据库交互的基础——JDBC(Java Database Connectivity)。JDBC是Java API,...

    linux和windows上备份Mysql数据库java代码

    3. **CmdUtil.java** - 在Linux和Windows系统中,备份MySQL数据库的常见方式之一是通过执行操作系统命令,比如`mysqldump`。这个类可能包含了运行操作系统命令的函数,使用Java的Runtime或ProcessBuilder类来执行...

    java实现数据库容灾备份

    本文将深入探讨如何使用Java来实现这一功能,特别是针对MySQL数据库的备份。结合提供的标题"java实现数据库容灾备份"和描述"可以集成定时任务去实时备份或者定期备份,欢迎一起讨论",我们将详细介绍如何利用Java...

    java实现mysql数据库备份

    文档中的代码采用java技术模拟mysql命令实现mysql数据库的备份!

    Java实现MySQL数据库备份

    在Java编程环境中,实现MySQL数据库备份通常涉及到操作系统命令行调用和文件操作。这段代码提供了一个名为`MySQLDatabaseBackup`的类,该类包含了将MySQL数据库导出为SQL文件的功能。下面将详细解释这个过程: 1. *...

    远程备份MySQL数据库

    "远程备份MySQL数据库" 远程备份MySQL数据库是一种非常重要的数据库管理任务,旨在保护数据库中的数据免受意外损失或篡改的影响。利用sqldump工具,可以轻松地将远程数据库备份到本地,确保数据的安全性和可靠性。 ...

    mysql 数据库备份 java 源代码

    要进行MySQL数据库备份,我们通常会执行`mysqldump`命令,这是一个用于备份MySQL数据库的实用工具。然而,在Java中,我们可以使用JDBC(Java Database Connectivity)API来模拟这个过程。首先,我们需要创建一个JDBC...

    java编写的数据库自动备份源码

    在使用这个Java编写的数据库备份程序时,用户需要根据自己的数据库类型(如MySQL, Oracle, PostgreSQL等)调整JDBC配置,并可能需要定制备份和恢复策略以适应特定的需求。同时,安全问题也不容忽视,备份文件应加密...

    java备份与恢复MYSQL数据库

    首先,备份MySQL数据库通常涉及两种主要方式:全量备份和增量备份。全量备份是指备份整个数据库,包括所有的表、索引、用户权限等信息。增量备份则只备份自上次备份以来发生改变的数据,这样可以节省存储空间。Java...

    java jsp实现mysql备份还原 代码

    本文将详细介绍如何使用 Java Bean 技术配合 JSP 来实现 MySQL 数据库的备份与还原功能。在实际开发过程中,数据库的备份与恢复是非常重要的环节,它可以确保数据的安全性和可用性。通过 Java Bean 的封装性,我们...

    java 定时备份数据库

    总之,实现Java定时备份MySQL数据库需要理解如何在Java中调用外部命令,如何创建定时任务,以及如何与Spring等框架集成。在SSM项目中,可以利用Spring的定时任务特性来优雅地管理备份任务。记得在实际应用中处理异常...

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

    在本项目中,我们将探讨如何使用Java的JSP(Java Server Pages)技术来实现对MySQL数据库的备份,并通过属性文件进行配置和操作。这是一个实用且常见的需求,特别是在Web应用程序的开发和维护中。 首先,让我们了解...

Global site tag (gtag.js) - Google Analytics