承接备份篇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. php文件读取的问题

    PHP字符编码问题 首先说下字符编码问题,当我们给定路径后如果路径中包含中文,可能会出现问题,打印到屏幕则显示没问题, 但是读取文件会报错:readfile(E:/素玄文件/app历史版本/素玄ERP ...

  2. SVN--版本控制系统

    引言 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subvers ...

  3. docker数据管理--数据卷的备份

    /* 先在宿主机创建一个备份的文 件夹, 然后将其以另外一个名字的目录挂载到容器里, 此时不管容器里,或宿主机里做什么操作, 数据都会及时更新,并得到备份. */ [root@localhost ~] ...

  4. 【Java基础】一些问题

    1. HashSet是如何保证数据不重复的: 首先,HashSet添加元素的时候,底层是通过HashMap的put方法来实现的,而添加的元素,则是保存在了hashMap的key里,因为HashMap的 ...

  5. JavaScript中常用的BOM属性

    window 窗口 window.open():打开窗口.返回一个指向新窗口的引用. window.close():关闭窗口. window.resizeTo():调整窗口尺寸到指定值 window. ...

  6. css设置div等标签背景半透明

    三种方式: 1. background-color: transparent; 直接设置背景为透明 2.这种是子元素也会跟着变成半透明 /* 背景半透明,1为不透明 */ opacity: 0.5; ...

  7. redis 安装配置

    reids 安装配置 1.1 下载软件包 [root@node01 ~]# mkdir -p /data/src/ [root@node01 ~]# cd /data/src/ [root@node0 ...

  8. sql server 2008 R2无法连接127.0.0.1报错 Server error:40(错误:53)

    在公司用sql server 2008 R2很好的,回家连接127.0.0.1就报错.sql server2008R2主机名和.都可以登录,连接127.0.0.1出错,在与 SQL Server 建立 ...

  9. 机器学习方法(八):随机采样方法整理(MCMC、Gibbs Sampling等)

    转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比 ...

  10. 【DUBBO】dubbo的Router接口

    Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服 ...