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

Windows下Spring3.x计划任务实现定时备份MySql数据库

 
阅读更多

今天在空闲之余查了一下关于MySql数据库备份的方案,最后结合自己的项目情况写了一个关于Spring计划任务的例子,目前我这个版本是在Windwos下测试成功,希望对大家有所帮助,不足之处还请大家多多包含,有什么建议尽管提出,我会第一时间回复大家,谢谢!

1.首先第一步要搭建Spring3.x的环境,这里就不多说,直接上代码:

package cn.gov.csrc.report.action;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

import javax.annotation.Resource;

import org.apache.struts2.convention.annotation.Action;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.context.annotation.Scope;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Controller;

import cn.gov.csrc.report.service.CaseService;

@Controller()
@Scope("prototype")
@Action("TimerAction")
public class TimerAction extends QuartzJobBean {

	private int timeout;
	
	private static int i = 0;

	private CaseService caseService;

	public TimerAction() {
		
	}
	
	/**调度工厂实例化后,经过timeout时间开始执行调度*/
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}

	@Resource
	public void setCaseService(CaseService caseService) {
		this.caseService = caseService;
	}

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		System.out.println("定时任务执行中......");
		JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
		System.out.println(jobDataMap+"-------");
	}

	public void start() {
		//备份mysql数据库
		Runtime runtime = Runtime.getRuntime();
		System.out.println("备份数据库任务开始了......");
		String cmd = "mysqldump -h localhost -uroot -proot springdb > e:/springdb.sql";//一定要加-h localhost(或是服务器IP地址)
		try {
			Process process = runtime.exec("cmd /c" + cmd);
			InputStreamReader inputStreamReader = new InputStreamReader(process.getErrorStream());
			LineNumberReader lineNumberReader = new LineNumberReader(inputStreamReader);
			String line;
			while((line = lineNumberReader.readLine()) != null){
				System.out.println(line+"----------------");
			}
			System.out.println("备份成功");
		} catch (IOException e) {
			System.out.println("备份失败");
			e.printStackTrace();
		}
		System.out.println("备份数据库任务结束了......");
	}
	
}

2.配置计划任何的配置文件,这里是使用的是quartz插件实现计划任务:

<!-- 任务计划 -->
    <!-- 要调用的工作 -->
    <bean id="timerAction" class="cn.gov.csrc.report.action.TimerAction"></bean>
    
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    	<!-- 调用的类 -->
    	<property name="targetObject">
    		<ref bean="timerAction"/>
    	</property>
    	<!-- 调用类中的方法 -->
    	<property name="targetMethod">
    		<value>start</value>
    	</property>
    	<!-- 作业不并发调度 -->
    	<property name="concurrent" value="false"/>
    </bean>
    
    <!-- 定义触发时间 -->
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
    	<property name="jobDetail">
    		<ref bean="jobtask"/>
    	</property>
    	<!-- cron表达式 -->
    	<property name="cronExpression">
    		<!-- 每天晚上11点59分钟59秒执行一次 -->
    		<!-- <value>0 59 23 * * ?</value> -->
    		<!-- 每天上午11点04分钟59秒执行一次-->
    		<value>0 04 11 * * ?</value>
    	</property>
    </bean>
    
    <!-- 总管理类,如果将lazy-init='false'那么容器启动就会执行调度程序 -->
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    	<property name="triggers">
    		<list>
    			<ref bean="doTime"/>
    		</list>
    	</property>
    </bean>

3.最后附上quartz的jar包,有需要的朋友可以下载,加到你们的Spring环境中句可以使用了,这个是8.6的:http://pan.baidu.com/s/1dDuvSwp

还有一个quartz时间格式的工具,可以任意改变时间格式:下载地址:http://pan.baidu.com/s/1o6M3PB8

分享到:
评论

相关推荐

    Springboot整合Quartz实现定时任务数据库动态配置

    Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作

    数据库实现本地备份

    1. 使用定时任务调用mysqldump命令实现mysql数据库数据库备份。 2. 通过rabbitmq发送消息给客户端。让客户端拉取备份数据

    基于SSM+mysql的分布式电商项目源码+数据库+项目说明(课程设计).zip

    7.MyCAT:一个彻底开源的,面向企业应用开发的“大数据库集群”支持事务、ACID、可以替代Mysql的加强版数据库,可以低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的...

    JavaFan 建站系统 v3.9.16.rar

    19.系统集成了定时器功能,方便二次开发的用户进行定时执行任务操作,例如:备份数据库、发送邮件等。 20.系统支持用户注册、登录、忘记密码找回、邮件激活绑定等功能。 21.实现了系统注册用户之间的即时聊天功能...

    MF00114-JAVASSF项目框架源码.zip

    数据库 : MySQL 开发工具 : Eclipse 源码类型 : WebForm 以SpringMVC+Spring+Hibernate+Freemarker+Shiro+Lucene+Html5+jQuery为技术核心架构. 主要功能:内容管理、论坛管理、文档发布、文档审核、模板管理、  ...

    Jspxcms网站内容管理系统 源码包 v9.0.0.zip

    (简历管理、数据库备份) 8、统计。(流量分析、受访访问、访问日志) 9、用户。(用户管理、角色管理、会员组管理、组织管理、全局用户管理、全局组织管理) 10、系统。(网站设置、系统设置、站点管理、模型...

    基于Jantent的博客系统学习springboot+源代码+文档说明

    - 每天定时备份数据库 ### 安装部署需求 - 可以使用docker方式部署,也可支持-jar方式 - 使用springboot自带方式打包 ## 非功能性需求 ### 性能需求 - 首页响应的时间不超过1秒钟 - 文章页响应时间不超过1秒钟 #...

    entfrm-boot可视化开发平台-其他

    数据维护:mysql数据库备份与还原。2、运维监控定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。令牌管理:用户登录token管理。数据监控: 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能...

    J2eeFAST企业级快速开发平台-其他

    Quartz数据库连接池:Druid 1.10.1数据库: Mysql5.7分布式缓存数据库: Redis 4.0.9工具类:Hutool 4.5.8工作流引擎:flowable 6.4.2J2eeFAST安装教程:1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上...

    阿里云javasdk源码-jblog:基于SpringBoot开发的文章发布系统

    数据库定时备份 多驱动图片上传(Native/阿里云oss/腾讯cos) 多驱动邮件发送(SMTP/阿里云) 图形验证码 CSRF/XSS 单元测试 全文搜索 限流控制 技术栈 Tailwind / Webpack / React Spring Boot / Thymeleaf / MyBatis /...

Global site tag (gtag.js) - Google Analytics