承接备份篇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. Java中volatile修饰符,不稳定标记的用法笔记

    今天学java特性时,发现了volatile修饰符,这个修饰符修饰的变量告诉java编译器忽略优化机制,这样的优势是: java优化后,寄存器会缓存内存里的变量,另一个线程修改这个变量的内存时,不会同 ...

  2. Shell三剑客之sed命令

    Sed简介 Sed是Stream Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具,常用功能有增删改查. Sed命令执行流程 Sed语法格式 Sed [option] ‘[匹配][处 ...

  3. spring mvc3+默认首页设置问题

    web.xml配置: <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-patte ...

  4. 关于移动端audio自动播放问题

    本人小白全栈一枚,给公司写了一个监控中心,要求严重报警的时候需要触发音频播放,于是就有了以下的折腾. 刚开始一切都很顺利,自然而然的写了以下代码. <audio id="myaudio ...

  5. ZOJ-3318

    Strange Country Time Limit: 1 Second      Memory Limit: 32768 KB There are n cities in the dream cou ...

  6. CountDownLatch源码浅析

    Cmd Markdown链接 CountDownLatch源码浅析 参考好文: JDK1.8源码分析之CountDownLatch(五) Java并发之CountDownLatch源码分析 Count ...

  7. Django-form組件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.创建Form类 1 2 3 4 5 6 7 ...

  8. CSS Modules入门及React中实践(内附webpack4配置)

    本篇文章以整理为主,自己进行了部分修改,如有侵权,请告知 CSS Modules介绍 CSS Modules是什么东西呢?首先,让我们从官方文档入手:GitHub – css-modules/css- ...

  9. Ubuntu上开启Apache Rewrite功能的方法

    Ubuntu上开启Apache Rewrite功能的方法 本文介绍ubuntn系统中开启apache的urlrewrite功能的方法. 在Windows上开启Apache的urlRewrite非常简单 ...

  10. react native 调用Android原生方法

    来源:https://www.youtube.com/watch?v=WmJpHHmOKM8 教程:https://www.youtube.com/watch?v=GiUo88TGebs Breaki ...