设为首页 收藏本站
查看: 703|回复: 0

[经验分享] 使用java实现自动备份mysql数据库

[复制链接]

尚未签到

发表于 2016-10-19 03:08:57 | 显示全部楼层 |阅读模式
       Last modified:2013-05-02 16:55:01
      **********************************************
       在实际应用中,定时备份数据库是一件非常重要的工作,下面是关于利用java程序实现数据库自动调用的方法,其实也不一定非要用java语言了,只要原理会了,大家大可使用其他语言来实现。话不多说,下面就来演示一下如何自动备份mysql下的abc数据库
 
1,在java API中为我们提供了一个Runtime类,它可以用来调用一些程序,比如notepad.exe,cmd.exe...
具体怎么回事,想了解的同学去看API吧,下面是实现代码:Backup.java
 

import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.IOException;
import java.io.PrintStream;
public class Backup
{
public static void main(String[] args)
{
Runtime runtime = Runtime.getRuntime();
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
String currentTime = dateFormat.format(calendar.getTime());
Process p = null;
PrintStream print = null;
StringBuilder buf = new StringBuilder();
for(String a : args){
buf.append(a);
buf.append(" ");
}
String databases = buf.toString();
try{
p = runtime.exec("cmd /c mysqldump -uroot -p1234 -B "+databases+">"+currentTime+".sql.bak");
}catch (IOException e){
if( p != null ){
p.destroy();
}
try{
print = new PrintStream(currentTime+"_backup_err.log");
dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
currentTime = dateFormat.format(calendar.getTime());
print.println(currentTime+"  backup failed.");
e.printStackTrace(print);
print.flush();
}catch (IOException e2){
}finally{
if(print!=null){
print.close();
}
}
}
}
}

 
2,将以上java程序编译后得到Backup.class文件;
 
 
 3,创建批处理文件mytask.bat: 

@echo off
cd c:\backup_wj
rem 这里提倡使用绝度路径,并且如果绝度路径中有空格,记得用
rem 引号将路径括起来!
rem 可以将abc替换为其他数据库,多多个数据库,并用空格隔开
"D:\Program Files\Java\jdk1.6.0_31\bin\java.exe" Backup abc
 
 3.1:根据评论我又发现了一个新的方法,不需要使用java,直接写一个批处理文件就可以实现自动备份功能,读者可以直接使用下面的批处理文件代替原来的批处理文件,不需要在使用java了,然后按照下面的步骤制订计划任务就可以了,代码如下:

mysqldump -uroot -p1234 -B abc > %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql.bak

  
4,将Backup.class、mytask.bat放到同一个目录下,比如我就放在了c:\backup_wj目录下
 
 
5,在win7下配置任务计划,下面照着步骤一步一步走就行了:
 
 
5.1:在控制面板下找到“管理工具”——》“任务计划程序”

DSC0000.jpg
 

DSC0001.jpg
 
5.2:选择“任务计划程序库”——》“创建基本任务”
DSC0002.jpg
 
5.3:填写任务名称和描述

DSC0003.jpg
 
 
5.4:下面根据向导的描述操作就可以了;
 

DSC0004.jpg
 
DSC0005.jpg
 


DSC0006.jpg
 
5.5:点击“浏览”选择批处理文件“mytask.bat”;
 

DSC0007.jpg
 
 

DSC0008.jpg
 
 
 
DSC0009.jpg
 
DSC00010.jpg
 
5.6:点击“完成”后,选中autoBackup,点击“运行”测试一下:
 

DSC00011.jpg
 
是不是有一个黑窗口一闪而过,好的那么打开你存放backup.bat的目录看一看,是不是生成了一个备份文件呢?
下面是我的,不过我们的备份文件已经生成了4次,从文件名就可以看出生成的时间。

DSC00012.jpg
 
那么其中的原理大家都会了吧,其实就是让我们的操作系统定时去执行一个批处理文件“Backup.bat”,而这个批处理文件会去执行一个.class文件,这是一个java可执行文件,它会调用runtime.exec()方法,在命令行下执行一段命令,这段命令就是备份数据库的命令。
注意:对于备份的时间,我们可以设置得更加精细,通过“编辑触发器”中的“重复任务间隔”我们可以精确到每5分钟重复执行一次。具体怎么设置大家可以根据实际情况来设置。

DSC00013.jpg
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287977-1-1.html 上篇帖子: mysql字段默认值不生效的问题解决(下) 下篇帖子: mysql函数-根据经纬度坐标计算距离
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表