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

java 定时备份数据库

阅读更多
java 定时备份数据库
首先我们要先写一个备份类
BackupDb.java
代码如下:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BackupDb {
public BackupDb() {
}
public String backup() throws IOException {

  BufferedWriter mBufWriter = null;
//建立一个BackupDb.bat文件
  FileWriter fileWriter = new FileWriter("BackupDb.bat");
  mBufWriter = new BufferedWriter(fileWriter);
  
  /*
   * 把数据库备份方法写入BackupDb.bat文件中。
   * BackupDbUrl 是数据库备份命令。
   * pg_dump.exe -U postgres -E utf8 test 备份数据库命令。
   * —U postgres 数据库用户名  -E utf8 设定字符编码格式。test 数据库名
   * BackupDbName 备份文件所存目录和名称,我是以备份时间命名。
   */
  String BackupDbUrl = "d:\\PostgreSQL8\\bin\\pg_dump.exe -U postgres -E utf8 test >";
  //取系统时间
  Date NowTimes = new Date();
  //将时间格式化成yyMMddhhmmss(年月日时分秒),例如200805010043   2008年5月1日0点43分。
  SimpleDateFormat sdf = new SimpleDateFormat("yyMMddhhmmss");
  String BackupDbName = "d:\\" + sdf.format(NowTimes) + ".sql";
  mBufWriter.write(BackupDbUrl);
  mBufWriter.write(BackupDbName);
  mBufWriter.newLine();
  mBufWriter.flush();
  mBufWriter.close();
  try {
   Runtime.getRuntime().exec("BackupDb.bat"); //执行BackupDb.bat文件进行备份数据库
  } catch (Exception e) {
   e.printStackTrace();
  }
  return BackupDbName;
}
}

然后我们在创建一个timer类,用来定时备份时间
TimerUse.java

代码如下:

package yifeng.com.org;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;
public class TimerUse {
public static void main(String[] args) {
  PickTask picktask = new PickTask();
  picktask .start(1, 60); //每60秒执行一次
}
}
class PickTask {
private Timer timer;
public PickTask() {
  timer = new Timer();
}
private TimerTask task = new TimerTask() {
  public void run() {
   Date date = new Date();
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String beginDate = sdf.format(date);
   String beginTime = beginDate.substring(11, 16);
   System.out.println(beginDate);
   
   BackupDb bdb=new BackupDb();
   PrintLog pl=new PrintLog();
   //设定备份时间
   if (beginTime.equals("23:22")) {
    try {
     
     bdb.backup(); //执行文件备份
     String dbName=bdb.backup().toString(); //取出备份的文件名字
     String path="d:\\";
     int nameNo=dbName.lastIndexOf("\\");
     File file=new File(path,dbName.substring(nameNo+1, dbName.length()));
     System.out.println(dbName.substring(nameNo+1, dbName.length()));
     //查看文件是否存在,以判断是否备份成功,写到备份日志里
     //注: 此处有点问题,明明备份成功,但是日志里却是位备份成功。不知道原因出在哪里
     //  在debug的时候写到日志里的就是备份文件成功。
     //  哪位高手能帮忙解决一下,在下不胜感激。
     //提示:其实这里还应该做些处理,如果未备份成功就应该重新备份。
     if(file.exists())
      pl.WriteLog(dbName+" 备份文件成功");
     else
      pl.WriteLog(dbName+" 未备份成功");
     
    } catch (FileNotFoundException e) {
     System.out.println("can not find the file");
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
};
public void start(int delay, int internal) {
  timer.schedule(task, delay * 1000, internal * 1000);
}
}

最后我们在写一个简单的备份日志类:
PrintLog.java

代码如下:
package yifeng.com.org;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PrintLog {
public PrintLog(){
  
}
public void WriteLog(String log) throws IOException{
  BufferedWriter mbw = null;
//在D盘创建一个备份日志文件log。txt
  FileWriter fileWriter = new FileWriter("D:\\log.txt",true);
  mbw = new BufferedWriter(fileWriter);
  
  Date date=new Date(); 
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  String writeTime=sdf.format(date);
  mbw.write(writeTime+"   "); //写入时间
  mbw.write(log);       //写入日志内容
  mbw.newLine();
  mbw.flush();
  mbw.close(); 
}
}

 

分享到:
评论

相关推荐

    自动备份数据库java源码

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

    定时备份数据库 可以设定备份时间

    定时备份数据库是一项基础且至关重要的任务,旨在确保数据的安全性,防止因硬件故障、软件错误或恶意攻击导致的数据丢失。本篇文章将深入探讨定时备份数据库的概念、重要性、常见方法以及实施策略。 1. **定时备份...

    postgresql数据库定时备份脚本(linux)

    在Linux环境中,对PostgreSQL数据库进行定时备份是确保数据安全的重要步骤。PostgreSQL是一个功能强大的开源关系型数据库系统,广泛应用于各种规模的企业和项目。定时备份可以帮助我们在系统故障、误操作或其他不可...

    java quartz计划任务中间件使用教程,每天定时备份数据库的插件jspweb java网站工程.rar

    本教程将深入讲解如何使用Quartz来实现每天定时备份数据库的功能,这对于Java Web应用程序尤其重要,确保数据的安全性和完整性。 1. **Quartz基础知识** - **核心概念**:Quartz主要由Job(任务)、Trigger...

    window定时工具,可以定时备份数据库,定时提醒等!

    标题和描述提到的"window定时工具"可能是指利用这些工具来实现定时备份数据库和定时提醒的功能。下面我们将深入探讨这两个核心知识点。 一、Windows任务计划程序 Windows任务计划程序是操作系统自带的一个实用工具...

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

    2. **SQL脚本生成**:为了备份数据库,程序可能需要生成SQL导出脚本,这将包含CREATE TABLE语句以及数据INSERT语句。 3. **数据导出**:使用生成的SQL脚本,程序可以逐条读取并记录数据,然后将这些记录保存到文件...

    java实现数据库容灾备份

    备份数据库的基本步骤包括: 1. 连接数据库:使用JDBC建立与MySQL服务器的连接。 2. 创建备份脚本:通常,我们会使用`mysqldump`命令来生成数据库的SQL脚本,或者直接导出二进制日志文件。在Java中,可以通过`...

    备份access数据库java

    swing界面开发的备份access数据库 可以自己选择路径 win界面操作风格

    Java代码备份(windows和Linux)服务器oracle数据库

    总结来说,通过Java实现Oracle数据库备份,主要涉及到JDBC的使用、操作系统命令的调用、文件操作、错误处理、定时任务以及安全性的考量。在实际应用中,根据具体的业务需求和环境,可能还需要进一步优化和扩展备份...

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

    在IT行业中,数据库管理是至关重要的任务之一,而定期备份数据库是确保数据安全的重要环节。本文将详细讲解如何使用Java代码来实现Mysql数据库的备份。这个“通过Java代码备份Mysql数据库Demo”是一个简单的示例,...

    Mysql数据库定时备份

    "Mysql数据库定时备份" Mysql数据库定时备份是数据库管理中非常...Mysql数据库定时备份是非常重要的操作,通过手动备份、使用定时任务备份和Java代码添加监听备份,可以选择合适的方法来备份数据库,保护数据的安全。

    任务计划+批处理实现Oracle数据库的定时备份

    本文将详细介绍如何利用任务计划和批处理脚本来实现Oracle数据库的定时备份。 一、任务计划(Task Scheduler) Windows的任务计划程序允许用户设置定期执行特定任务,如运行一个批处理文件。创建任务计划的过程...

    sql server自动备份数据库

    SQL Server 自动备份数据库 SQL Server 自动备份数据库是指通过设置代理来自动备份数据库文件的过程。下面是相关的知识点: SQL Server 代理 SQL Server 代理是 SQL Server 的一部分,负责执行预定义的作业,例如...

    java备份还原数据库

    - SQL Server JDBC驱动也支持执行备份数据库的T-SQL语句,例如`BACKUP DATABASE`。 5. **数据库还原** - **物理还原**:直接替换数据库文件或使用特定的恢复命令(如MySQL的`mysqlimport`或SQL Server的`RESTORE ...

    Java SQL server 数据库备份

    在SQL Server中,备份数据库通常通过T-SQL语句`BACKUP DATABASE`执行。在Java中,可以通过`Statement`或`PreparedStatement`对象执行这个命令。例如: ```java String sql = "BACKUP DATABASE [YourDatabaseName]...

    使用java自动备份mysql数据库

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

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    备份数据库和还原数据库的插件以及源码

    首先,我们需要理解备份数据库的概念。数据库备份是为了防止硬件故障、软件错误、人为误操作或其他灾难性事件导致的数据丢失,而将数据库中的所有信息复制到另一存储介质上的过程。备份通常分为全量备份、增量备份和...

    Java备份后台数据库

    2. **SQL语句**:备份数据库通常需要执行`SELECT INTO OUTFILE`或`mysqldump`等命令(针对MySQL),或者使用`COPY TO`(PostgreSQL)来将数据导出为文件。在Java中,这些命令可以通过`Statement`或`...

Global site tag (gtag.js) - Google Analytics