范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

java代码定时备份mysql数据库及注意事项基于springboot

  一、需求:
  定时备份数据库数据
  二、分析:
  1. 定时任务
  2. 备份数据库表结构和数据
  三、实现:
  1. pom 文件:
  <?xml version="1.0" encoding="UTF-8"?>      4.0.0               org.springframework.boot         spring-boot-starter-parent         2.2.2.RELEASE                     com.kevin     backupdatabase     1.0-SNAPSHOT      jar              1.8                                          mysql             mysql-connector-java             8.0.15                                        com.alibaba             druid             1.1.20                                        org.springframework.boot             spring-boot-starter             2.2.4.RELEASE                               org.awaitility             awaitility             3.1.2             test                                                           org.springframework.boot                 spring-boot-maven-plugin                            
  2. application.yml 文件
  1
  2
  3
  4
  5
  6
  7
  8
  9
  spring:   datasource:   driver-class-name: com.mysql.jdbc.Driver   url: jdbc:mysql://192.168.100.120:3306/test01?useSSL=false&autoReconnect=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8   username: kevin02   password: Kevin123!   sqlbackup:   path: /export/servers/db_backup/   3. BackUpDataBaseManager —— 具体操作数据库备份   package com.kevin.manager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; /** * @author dell * @version: task.java v 1.0, 2020年01月18日 12:47 * @Description 数据库操作 **/ @Service public class BackUpDataBaseManager { private static final Logger log = LoggerFactory.getLogger(BackUpDataBaseManager.class); @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String userName; @Value("${spring.datasource.password}") private String password; @Value("${sqlbackup.path}") private String sqlPath; /** * 获取数据库名 */ public String getDataBaseName() { return url.substring(url.indexOf("3306"), url.indexOf("?")).replaceAll("/", "").replaceAll("3306", ""); } /** * 获取主机地址 */ private String getHost() { return url.substring(url.indexOf("mysql"), url.indexOf("3306")).replace(":", "").replace("//", "").replace("mysql", ""); } /** * 导出 sql 并返回相关信息 */ public void exportSql(String time) { // 指定导出的 sql 存放的文件夹 File saveFile = new File(sqlPath); if (!saveFile.exists()) { saveFile.mkdirs(); } String host = getHost(); String dataBaseName = getDataBaseName(); String fileName = time + "_" + "cloudpm.sql"; StringBuilder sb = new StringBuilder(); // 拼接备份命令 sb.append("mysqldump").append(" --opt").append(" -h ").append(host).append(" --user=").append(userName).append(" --password=").append(password); sb.append(" --result-file=").append(sqlPath + fileName).append(" --default-character-set=utf8 ").append(dataBaseName); try { Process exec = Runtime.getRuntime().exec(sb.toString()); if (exec.waitFor() == 0) { log.info("数据库备份成功,保存路径:" + sqlPath); } else { System.out.println("process.waitFor()=" + exec.waitFor()); } } catch (IOException e) { log.error("备份 数据库 出现 IO异常 ", e); } catch (InterruptedException e) { log.error("备份 数据库 出现 线程中断异常 ", e); } catch (Exception e) { log.error("备份 数据库 出现 其他异常 ", e); } } }   3. 定时任务   package com.kevin.schedule; import com.kevin.manager.BackUpDataBaseManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; /** * @author dell * @version: ScheduledTasks.java v 1.0, 2020年02月11日 11:38 * @Description 定时任务 **/ @Component public class ScheduledTasks { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSS"); @Autowired private BackUpDataBaseManager backUpDataBaseManager; /** * 每天下午4点50分30秒执行 */ @Scheduled(cron = "30 50 16 * * ?") public void reportCurrentTime() { String format = dateFormat.format(System.currentTimeMillis()); log.info("The time is now {}", format); backUpDataBaseManager.exportSql(format); } }   4. 启动类   package com.kevin; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; /** * @author dell * @version: TaskAppliacation.java v 1.0, 2020年02月11日 12:12 * @Description **/ @SpringBootApplication @EnableScheduling public class TaskApplication { public static void main(String[] args) { SpringApplication.run(TaskApplication.class); } }   5. 执行:   启动程序:   执行结果(文件名 _ 前面为 时间戳):   sz 命令下载   默认下载到 下载目录   文件内容:   思路:使用   mysqldump --opt -h hostname --user=username --password=password --result-file=/dir/filename --default-character-set=utf8 dbname   命令   hostname :数据库所在主机   username:数据库连接用户名   password:数据库连接密码   result-file:结果文件。指定目录+文件名   dbname:需要导出的数据库名   如:   mysqldump --opt -h 192.168.100.120 --user=kevin --password=Kevin123! --result-file=/export/servers/db_backup/2020021216503001_cloudpm.sql --default-character-set=utf8 test01   注意事项:   网上有说 加个 锁表的参数 --lock-all-tables=true   但报 无 reload 权限,直接拿 语句执行,也报相同的问题:   mysqldump: Couldn"t execute "FLUSH TABLES": Access denied; you need (at leas……)   通过 grant 进行授权也不行   直到看到   然后 去掉了 --lock-all-tables=true   就可以执行成功了

马宁执法世界杯伊朗vs美国?画面很美好,却被两点证明不可信近日在短视频平台上出现了一则关于中国裁判马宁将执法世界杯小组赛第三轮伊朗vs美国这场比赛的消息。消息一出,有人畅想马宁给美伊扮演和平使者调停矛盾的美好画面,也有人斥责这个消息一眼假世界杯大名单看名字识国家(三)逊斯福德汉姆前两期世界杯大名单看名字识国家(一)森维奇和斯基和世界杯大名单看名字识国家(二),勒曼范德分别介绍了丹麦塞尔维亚克罗地亚波兰德国和荷兰的姓氏文化。整体遵循的是一个从野蛮到文明,从单PANACHE品牌2022春夏系列泳装专业D内衣品牌Panache很高兴推出2022春夏最新泳装系列,主打全新款式和配色的标志性单品。与核心系列一起推出的是四个全新的系列,为每个人提供一些东西,同时为更大的胸围尺寸提供芳香世家秋冬美白篇,11月女神发光闪耀专场美白防晒一年四季都需要重视,有人觉得做好了夏季的防晒就可以一劳永逸,涂抹防晒霜戴遮阳帽穿防晒衣但,往往却忽视了秋冬的美白护肤,其实秋冬才是美白护肤的黄金期!秋冬为什么更容易变黑?原呢大衣里面穿什么?建议这4款内搭,保暖又时尚,脱掉外套也洋气如果你真的想要成为一个气质女人,那就一定要找准自己的穿搭风格,找到自己的优势,展现个人魅力和风采,如果在秋冬季节穿大衣你也没有太多思路的话,就要从内搭入手,像今年秋冬季节极其流行的负债累累的人,记住刘伯温的四句话,就能走上坡路了钱的好处说不完没钱的苦,一言难尽。人活着,最怕的,应该是负债累累吧。若非如此,就是你变成了老赖,过着东躲西藏的生活,还不知廉耻。人穷没关系,要有骨气。其实,穷是致富的开始,只是很多我奋斗我快乐一年之计在于春,一日之计在于晨。一寸光阴一寸金,难买寸光阴。在年轻的时候,正是为达成人生理想和实现自我价值而努力奋斗打拼的年纪,同时也是最经受不住各种诱惑考验的年纪,爱慕虚荣,贪图冬天,最温暖的4件小事时间过得可真快啊,转眼间,冬天如期而至。傍晚下班的时候,风已有些刺骨,吹在脸上,凉飕飕的。岁暮天寒,难免寂寥了些,于是,总想着做些小事情,好好照顾自己。比如,吃一顿热乎乎的火锅,比每日一读,感受阅读的快乐,为简单生活增添几分精彩路上的情书林清玄我捡过一封诀别的情书。情书上有这样看来普通的句子当初是我选择了你,心里明知与你不会长久,还是执着的选择了你。这些日子以来,谢谢你陪我走过这一段路。你是一个很好的人,有钱人的快乐你根本想象不到有钱人说钱多了不开心我对钱不感兴趣,就像瘦子说胖一点好,健康,就像美女说长相其实并不重要,只是虚伪的随口说说而已,你若当真,就输了。有钱人活得不开心?真相是有钱人的快乐你根本无法想半仙在哪里啊半仙你信不信命和轮回。我我相信世间有大道,轮回在其中。最终我们都要走在大道上的。只要抱一颗真心,别太看重那些小道,干什么都好。半仙说得玄乎,走火入魔!只有眼前才是你应该把握的,过去
你26岁了,不适合红色蝴蝶结你26岁了,不适合红色蝴蝶结。当听到旁边有人对一个年轻女孩这样说的时候,你怎么想?是赞同于别人当了你的嘴替?还是不解于别人的多管闲事?亦或是哀叹于世俗常态的不友好目光?你头上这个蝴此生,只愿与你共舞时光在河流的声响里沉寂良久岁月敲响了年轮的门槛缱绻流年你迷人的身姿日日夜夜出现在我的梦乡我无法拒绝你的诱惑你那靓丽的倩影牵引着我的每一丝神经随你舞动飞过世间最绚烂的梦海微风轻拂就像爱之所爱,心之所爱这几日,没看书,没写字,慵懒度日,却落了眼疾。眼角红痒,估计是手机追剧,眼疲劳所致。手机看久了伤眼,伤颈椎。明知道有害,还是任其荼毒。得了毛病再改正,等同于亡羊补牢。这是不能控制自46岁林心如和46岁林熙蕾,两人同穿黑色服装,气质差别真大对于女明星来说,参加活动时的造型是非常讲究精致感和优雅气息的,她们不仅要塑造出整体造型的完美程度,而且还要考虑到自身优势的体现,比如身材曲线比例协调身姿体态等等问题。有的女明星在参这些NPC在战场上,到底玩的啥游戏?森纳映画欢迎收看本期的不止游戏,我是乔伊。之前我重新玩了玩荒野大镖客救赎,发现游戏中一些NPC,爱玩一个很独特的棋牌游戏,看起来有点像麻将,但又在桌上摆成各种造型。当时我就准备去看看,却发孩子入睡难闹觉一放下就醒,看完这篇文章就知道怎么办了对于一个妈妈来说,最崩溃的就是你以为娃睡着了,可一放下去就醒了,还有频繁夜醒黑白颠倒小睡不长真是分分钟在暴走的边缘试探。让娃睡个整觉的梦想就那么遥不可及吗?其实也不是,最主要的是你如何染发不伤头发?护发精油能让染色更持久?染发原理强哥之前分享过染发的原理,简单来说就是给头发丝上点色素,但是想让色素牢牢巴在发丝上是不容易的。我们去理发店染发时,一般都需要对头发进行预处理,也就是打开毛鳞片,让色素深入到苹果手机一点都不好用家人买了苹果14,13就闲下来了。我拿来用。但根本不好用,从界面操作上就没有原来的好用。头2回使用,打字的时候标点符号都不知道哪儿输入。让人觉得十分的不方便。这且不说,关键是下载软Adobe2023全家桶正式发布,更智能更好用(支持WINMACM1M2)Adobe作为设计圈生产力工具的存在,每次更新升级都会引起很大的关注,这次也不例外,Adobe2023换代升级全家桶正式发布!这次更新主要是由AI提供支持的一些更加智能化的黑科技,文字生成语音,我只需要1秒,朗读配音都不是问题大家在平时阅读或者是视频配音的时候,可能都会用到语音转蚊子的功能,下面来给大家分享4个文字转语音工具,帮助我们将文字内容快速生成语音!本篇分享前两款为手机工具,后两款为电脑端工具。有哪些单品平时不惊艳,特定场景却能大杀四方你有没有遇到这种场景,平时嫌弃要死的某品牌单品保命狗头,却在特殊的时期异常好用。是不是很熟悉。之前的文章提到过一个现象,就是在不同的环境不同的季节,甚至是不同的年纪都会有不同的产品