承接备份篇1,

在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务

在这一篇,备份使用java程序定期备份mysql数据库。

下面代码和程序思想给出:

 package com.agen.util;

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.sql.Time;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; /**
* java程序实现mysql定期备份功能
* 主体思想:
* 1.runtime.exec(DOS命令)执行DOS命令,得到mysql备份文件
* 2.OutputStreamWriter将读取到的备份文件,写出到本地磁盘
* 3.设置定时任务TimerTask
* 4.timer.schedule(task, nowTime,1000*3);设置定时器相关参数并执行定时任务
* @author sxd
*
*/
public class MysqlBak { private static String sqlUrl = "\"C://Program Files//MySQL//MySQL Server 5.5//bin//mysqldump\" -u root --password=root performance";
private static String targetUrl = "D:\\db_backup\\performance_"; public MysqlBak() throws IOException{
backUp();
} public static void main(String[] args) {
Date nowTime = new Date();
TimerTask task = new TimerTask() { @Override
public void run() {
try {
System.out.println("mysql备份开始时间:"+nowTime.toLocaleString());
MysqlBak bak = new MysqlBak();
} catch (IOException e) {
System.out.println("异常如下:"+e);
} }
}; //java自带 定时器
Timer timer = new Timer();
//参数1 要干的事情
//参数2 任务开始执行的时间【这里将时间定为 任务启动的时间】
//参数3 隔多长时间执行一次任务【毫秒为单位】
timer.schedule(task, nowTime,1000*3);
} /**
* mysql数据库的备份
* @throws IOException
*/
public static void backUp() throws IOException{
//每个java程序都有自己的一个Runtime类实例,使应用程序与其运行的环境相连接,
//应用程序不能自己创建自己的Runtime实例,只能通过getRuntime()获得
Runtime runtime = Runtime.getRuntime();
//调用mysql安装目录的命令
Process child = runtime.exec(sqlUrl);
//读取到此子进程的输出流
InputStream in = child.getInputStream();
//把进程执行中的控制台输出信息写入.sql文件,这就是完成了备份文件
//如果不对控制台信息进行读出,会导致进程堵塞无法运行
//设置编码为UTF-8,否则会乱码
InputStreamReader inputStreamReader = new InputStreamReader(in,"utf-8");
//用来存储 从子进程读取到程序的每一行的数据
String inStr;
//将每一行的数据追加至stringBuffer
StringBuffer sb = new StringBuffer(""); BufferedReader br = new BufferedReader(inputStreamReader);
System.out.println("操作命令执行首行:"+(inStr = br.readLine()));
while((inStr = br.readLine()) != null){
sb.append(inStr+"\r\n");
}
//获取当前时间,用于拼接备份文件的文件名
String nowTime = new Time(System.currentTimeMillis()).toLocaleString();
//备份文件的输出流
FileOutputStream out = new FileOutputStream(new File(targetUrl+nowTime.replace(" ", "_").replace(":", "_")+".sql"));
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(out,"utf-8");
outputStreamWriter.write(sb.toString());
outputStreamWriter.flush(); in.close();
inputStreamReader.close();
br.close();
out.close();
outputStreamWriter.close();
System.out.println("备份成功");
System.out.println("mysql备份完成的时间:"+new Date().toLocaleString()); }
}

这样,将此类放置在你的项目中运行起来即可,只要项目不被停止,它会一直工作下去的。

【mysql】备份篇2:使用java程序定期备份mysql数据库的更多相关文章

  1. mysql自身报错、java、reids连接mysql数据库报错汇总

    1.Can't connect to local MySQL server through socket 'tmpmysql.sock' (2) 原因是mysql根本没有启动 2.Access den ...

  2. Java程序中实现 MySQL数据库的备份与还原

    案例代码: 数据库备份 //mysqldump -h端口号 -u用户 -p密码 数据库 > d:/test.sql --备份D盘 //备份 public static void dataBase ...

  3. 项目mysql数据导入数据的Java程序

    最近写的一个数据库导入数据的程序,有兴趣的同学可以参考一下: 这个程序是针对mysql数据库的,在本地或服务器上运行,主要的需求还是,针对项目的某些bug修复 后,客户的数据要搬到新表上来,避免新版本 ...

  4. MySQL入门篇(六)之mysqldump备份和恢复

    一.备份单个数据库 1.备份命令:mysqldump MySQL数据库自带的一个很好用的备份命令.是逻辑备份,导出 的是SQL语句.也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备 ...

  5. mysql创建 存储过程 并通过java程序调用该存储过程

    create table users_ning(id primary key auto_increment,pwd int); insert into users_ning values(id,123 ...

  6. Java程序在向mysql中插入数据的时候出现乱码

    今天在往数据库中插入数据的时候中文字符在数据库中就出现了乱码?网上有各种说法,但是适合我的,最终解决我的问题的只有下面一种! 在创建数据库的时候,注意设置编码方式. CREATE DATABASE ` ...

  7. MySQL 总结篇 [在Oracle基础上学习的MySQL]

    一.学习环境 MySQL 5.7社区版 Navicat for MySQL 百度网盘下载链接:https://pan.baidu.com/s/1yGnznwoZ8CaMgrCsDBhKAQ 二.MyS ...

  8. 在java程序中使用JDBC连接mysql数据库

    在java程序中我们时常会用到数据库中的数据或操作数据库中的数据,如果java程序没有和我们得数据库连接,就不能实现在java程序中直接操作数据库.使用jdbc就能将java程序和数据库连起来,此时我 ...

  9. 【Java】JDBC连接MySQL

    JDBC连接MySQL 虽然在项目中通常用ORM的框架实现持久化.但经常因测试某些技术的需要,要写一个完整的JDBC查询数据库.写一个在这儿备份. 首先引入驱动包: <dependencies& ...

随机推荐

  1. 基础的语法知识(static关键字)

    1.C++中的局部变量.全局变量.局部静态变量.全局静态变量的区别 局部变量(Local variables)与 全局变量: 在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局 ...

  2. caffe solver.prototxt 生成

    from caffe.proto import caffe_pb2 s = caffe_pb2.SolverParameter() path='/home/xxx/data/' solver_file ...

  3. JavaScript里的小妖精

    JavaScript里的小妖精———this!! 关于this指向这个问题,活生生折磨了我一个下午,回来静下心捋顺一下,总结出来一下规律. 当然,this这个复杂的问题不是一句两句可以说清楚,作为菜鸟 ...

  4. UCenter创始人、Discuz!创始人、管理员账号的认知(转)

    UCenter创始人.Discuz!创始人.管理员账号的认知       什么是创始人?现在可能还有好多的站长对这个概念有点模糊,今天我给大家屡屡思路,讲讲这个概念性问题,没啥技术含量.已经明白这个概 ...

  5. js前端数据加密插件

    (2014-11-14 15:37:35) 转载▼ 标签: it 分类: Web前端开发 摘要: 大部分动态网站都支持从客户端到服务器传递数据,如果传递的数据被别人截取就非常危险,尤其是一些用户名密码 ...

  6. 一个大div里面包裹一个小div,里面的小div的点击事件不触发外面的这个大div的点击事件

    一开始上html代码 <div id="div1" style="background: blue;width: 100px; height: 100px;&quo ...

  7. Markdown语法简编

    [笔者按]Markdown语法的最大的特点在于原文语法少而简,内容纯文本化,且生成的版式简洁优雅.本文参考了一些网上的参考文字,经自行精简整理. 区块元素 段落和换行,标题,引用,列表,代码块,分隔线 ...

  8. [你必须知道的.NET]第二十七回:interface到底继承于object吗?

    发布日期:2009.03.05 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 在.NET世界里,我们常常听到的一句话莫过于“S ...

  9. jsp页面中获取session中的值

    Jsp中获取Session: session是jsp的内置对象,所以你可以直接写在jsp的 <% session.setAttribute("a", b); //把b放到se ...

  10. WeGame导致WSL无法监听端口问题

    Windows 10 系统自带Linux子系统(WSL),可以方便的使用WSL运行Linux程序和脚本.笔者在WSL上运行Redis时突然发现无法监听6379端口,尝试重新安装WSL无果. 后来重新安 ...