j2EE 利用Quartz任务调度 进行 mysql 数据库自动备份

本文介绍了一个使用Quartz任务调度和Spring框架实现的自动化数据库备份系统,通过Mysql的mysqldump工具定期备份数据库,确保数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的网站,每次数据库备份都得手动备份,有的时候还会忘记,没出问题还好,要是有问题那就麻烦啦,所以干脆自己写个备份程序吧

使用的quartz的任务调度功能,当然也顺便把它整到spring里面去了,把源码拿来与大家分享:

1. DataBackupImp.java

package cn.hunqiu.data;

import java.io.IOException;
import java.util.Date;

public class DataBackupImp
{
	private StringBuffer copyString = new StringBuffer("mysqldump ");//利用mysql的mysqldump 工具,前提是你要吧mysql 的bin目录加入你的系统path
	private String lastStr = null;
	private String user = "-u****";//***为用户名
	private String pwd = "-p***";//***为密码
	private String db = "****";//要备份的数据库
	private String path = System.getProperty("testhunqiu.root");//你的网站程序的映射地址
	private String sqlFileName = null;
	@SuppressWarnings("deprecation")
	public DataBackupImp()
	{
		copyString.append(user).append(" ").append(pwd).append(" ").append(db).append(" >");
		sqlFileName = path + "WEB-INF\\datacopy\\"+db +"_"+new Date().toLocaleString().replaceAll(":","-")+".sql";
		lastStr = copyString + sqlFileName;
	}
	@SuppressWarnings("deprecation")
	public DataBackupImp(String user,String pwd,String db)
	{
		copyString.append(user).append(" ").append(pwd).append(" ").append(db).append(" >");
		sqlFileName = path + "WEB-INF\\datacopy\\"+db +"_"+new Date().toLocaleString().replaceAll(":","-")+".sql";
		lastStr = copyString + sqlFileName;
	}
	@SuppressWarnings("deprecation")
	public void dataCopy() throws IOException
	{
		String temp = ("cmd /c "+lastStr).replaceAll("//","\"\\\\\"").replaceAll("\\\\","\"\\\\\"");//把\换成windows的地址分隔符/
		temp=temp.replaceFirst("\"","");
		Runtime.getRuntime().exec(temp);
		System.out.println("已经完成计算 数据库文件备份----------");
		System.out.println("文件路径:"+sqlFileName+" 备份时间"+new Date().toLocaleString());
	}
}

2.applicationContextQuartz.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/context/mvc" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
	http://www.springframework.org/schema/context/mvc http://www.springframework.org/schema/context/mvc/spring-mvc-3.0.xsd">

	
	
	<!-- Quartz任务调度 -->
	
	<!--
	数据库备份
	-->
	<bean id ="datacopyQuartz" class="cn.hunqiu.data.DataBackupImp"/>
	
	<bean id="hqDatacopyQuartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="datacopyQuartz"/>
		</property>
		<property name="targetMethod">
			<value>dataCopy</value>
		</property>
	</bean>
	
	<bean id="datacopyQuartzTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="hqDatacopyQuartz"/>
		</property>
		<property name="cronExpression">
			<!-- <value>0 0 23 * * ?</value> --><!-- 每天23点 -->
			<value>0 0 * * * ?</value><!-- 每小时 -->
		</property>
	</bean>
	
	
	
	<bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">	
		<property name="triggers">
			<list>
				<ref bean="datacopyQuartzTime"/>	
			</list>
		</property>
	</bean>
	
	
	
</beans>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值