承接备份篇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. Oracle 获取ddl语句

    --得到所有表空间的ddl语句 SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)FROM DBA_TABLESPACES T ...

  2. 【uva11248】网络扩容

    网络流裸题. 求完最大流之后保留残余容量信息,依次将已经加入最小割的弧变成c再跑,记录下即可. #include<bits/stdc++.h> #define N 20005 #defin ...

  3. MACBOOK 总是断网怎么办

    MACBOOK 连接 wifi 老是断网.焦躁不安 看图,二个方法,第一就搞定,

  4. 调用手机端硬件功能 汇总(android/ios) Native.js示例汇总

    Native.js示例汇总 NJS Native.JS 示例 Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成.这篇帖子的目的就是汇总各种写好的NJS代码,方便w ...

  5. JavaScript中常用的BOM属性

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

  6. 0,null,undefined,[],{},'',false之间的关系

    0与一些虚值的比较: 0与false 0==false true 0与'': =='' true 0与[]: ==[] true 0与NaN: 0==NaN false 0与undefined 0== ...

  7. 深度学习方法:受限玻尔兹曼机RBM(一)基本概念

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...

  8. chattr命令的用法

    chattr (配置文件隐藏属性)[root@www ~]# chattr [+-=][ASacdistu] 文件或目录名称选项与参数:+ :添加某一个特殊参数,其他原本存在参数则不动.- :移除某一 ...

  9. (1)ansible基本配置

    1)ansible安装 yum install epel-release -y yum install ansible -y 2)ansible语法 语法: ansible <host-patt ...

  10. Ubuntu 18.04安装网易云音乐(转载)

    作为Ubuntu下唯一一款超级好用的音乐软件,必须下载. 提升为root权限后操作 0 : 网易云音乐1.0.0(该版本较为好安装)下载地址 http://s1.music.126.net/downl ...