【mysql】备份篇2:使用java程序定期备份mysql数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 承接备份篇1,在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务在这一篇,备份使用java程序定期备份mysql数据库。下面代码和程序思想给出: 1 package com.

承接备份篇1,

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

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

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

  1 package com.agen.util;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.File;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.io.InputStreamReader;
  9 import java.io.OutputStreamWriter;
 10 import java.sql.Time;
 11 import java.util.Date;
 12 import java.util.Timer;
 13 import java.util.TimerTask;
 14 
 15 /**
 16  * java程序实现mysql定期备份功能
 17  * 主体思想:
 18  * 1.runtime.exec(DOS命令)执行DOS命令,得到mysql备份文件
 19  * 2.OutputStreamWriter将读取到的备份文件,写出到本地磁盘
 20  * 3.设置定时任务TimerTask
 21  * 4.timer.schedule(task, nowTime,1000*3);设置定时器相关参数并执行定时任务
 22  * @author sxd
 23  *
 24  */
 25 public class MysqlBak {
 26     
 27     private static String sqlUrl = "\"C://Program Files//MySQL//MySQL Server 5.5//bin//mysqldump\" -u root --password=root performance";
 28     private static String targetUrl = "D:\\db_backup\\performance_";
 29     
 30     public MysqlBak() throws IOException{
 31         backUp();
 32     }
 33     
 34     
 35     
 36     
 37     public static void main(String[] args) {
 38         Date nowTime = new Date();
 39         TimerTask task = new TimerTask() {
 40             
 41             @Override
 42             public void run() {
 43                 try {
 44                     System.out.println("mysql备份开始时间:"+nowTime.toLocaleString());
 45                     MysqlBak bak = new MysqlBak();
 46                 } catch (IOException e) {
 47                     System.out.println("异常如下:"+e);
 48                 }
 49                 
 50             }
 51         };
 52         
 53         //java自带 定时器
 54         Timer timer = new Timer();
 55         //参数1 要干的事情
 56         //参数2 任务开始执行的时间【这里将时间定为 任务启动的时间】
 57         //参数3 隔多长时间执行一次任务【毫秒为单位】
 58         timer.schedule(task, nowTime,1000*3);
 59     }
 60     
 61     
 62     /**
 63      * mysql数据库的备份
 64      * @throws IOException
 65      */
 66     public static void backUp() throws IOException{
 67         //每个java程序都有自己的一个Runtime类实例,使应用程序与其运行的环境相连接,
 68         //应用程序不能自己创建自己的Runtime实例,只能通过getRuntime()获得
 69         Runtime runtime = Runtime.getRuntime();
 70         //调用mysql安装目录的命令
 71         Process child = runtime.exec(sqlUrl);
 72         //读取到此子进程的输出流
 73         InputStream in = child.getInputStream();
 74         //把进程执行中的控制台输出信息写入.sql文件,这就是完成了备份文件
 75         //如果不对控制台信息进行读出,会导致进程堵塞无法运行
 76         //设置编码为UTF-8,否则会乱码
 77         InputStreamReader inputStreamReader = new InputStreamReader(in,"utf-8");
 78         //用来存储 从子进程读取到程序的每一行的数据
 79         String inStr;
 80         //将每一行的数据追加至stringBuffer
 81         StringBuffer sb = new StringBuffer("");
 82         
 83         BufferedReader br = new BufferedReader(inputStreamReader);
 84         System.out.println("操作命令执行首行:"+(inStr = br.readLine()));
 85         while((inStr = br.readLine()) != null){
 86             sb.append(inStr+"\r\n");
 87         }
 88         //获取当前时间,用于拼接备份文件的文件名
 89         String nowTime = new Time(System.currentTimeMillis()).toLocaleString();
 90         //备份文件的输出流
 91         FileOutputStream out = new FileOutputStream(new File(targetUrl+nowTime.replace(" ", "_").replace(":", "_")+".sql"));
 92         OutputStreamWriter outputStreamWriter = new OutputStreamWriter(out,"utf-8");
 93         outputStreamWriter.write(sb.toString());
 94         outputStreamWriter.flush();
 95         
 96         in.close();
 97         inputStreamReader.close();
 98         br.close();
 99         out.close();
100         outputStreamWriter.close();
101         System.out.println("备份成功");
102         System.out.println("mysql备份完成的时间:"+new Date().toLocaleString());
103         
104     }
105 }
View Code

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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
9天前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
168 93
|
1月前
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
285 82
|
5天前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
4天前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
1月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
104 17
|
1月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
1月前
|
SQL 关系型数据库 MySQL
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
|
1月前
|
存储 SQL 关系型数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
49 0
|
1月前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004