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

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   就可以执行成功了

9月,新土豆正当季,便宜营养,6道做法分享,学会有空做给家人吃9月,新土豆正当季,便宜营养,6道做法分享,学会有空做给家人吃秋高气爽,正是粮食蔬菜大丰收的季节,最近各种卖秋菜的车渐渐多了起来,又到了一年一度囤秋菜的季节。在北方早些时候,物质条做辣椒酱,只放盐是外行,需多加2味料,香辣入味,久放不坏头条创作挑战赛莫愁厨路无知己,谁人不识小面姨。大家好,我是小面姨。今天小面姨给大家分享一道辣椒酱的做法。最近这几天,已经是深秋时节,各种各样的秋季蔬菜已经到了即将退场的时刻。如果想豆角不要炒着吃,加1勺玉米面,比肉还香的美味,吃一次念念不忘豆角不要炒着吃,加1勺玉米面,比肉还香的美味,吃一次念念不忘。豆角鲜嫩好吃,价格也很便宜,现在每家每户餐桌上最常见的菜就是豆角。豆角好吃,营养高,含有丰富的蛋白质,维生素,和少量的国内4大光瓶酒,便宜好喝,却因酒瓶简陋被嫌弃,有谁都喝过在白酒圈,有人说喝光瓶酒的人是懂酒,因为光瓶酒价格便宜,酒质参差不齐,但是能从这一堆品牌中选到性价比高的,那是真酒腻子。也有人会贬低喝光瓶酒的,说光瓶酒价格便宜,假酒成堆,能喝光瓶江苏70岁大爷,晒满墙茅台引发热议,酒友您还缺儿子吗?有钱人的世界真奢靡!茅台随便喝,是多少酒友可望不可及的梦,但在豪门的眼中,茅台可能都不值得一品。这不,前两天江苏一位70岁大爷分享日常,不小心拍到家中一整墙的茅台,此图一出,简直惊日本媒体曝出猛料!福原爱遭家长投诉,或被解聘,儿子也将被带走8月27日,许久没有在公共场合露面的福原爱,再次被推上风口浪尖,成为国内媒体球迷关注的焦点!此前,福原爱被媒体球迷关注基本都与横滨男有关,但这一次与以往不同,福原爱成为舆论的焦点,戒指戴在左手上有什么意义?戴戒指是有讲究的。按西方的传统习惯来说,左手显示的是上帝赐给你的运气,因此,戒指通常戴在左手上。现在比较流行的戴法是食指想结婚,表示未婚中指已经在恋爱中无名指表示已经订婚或结婚小指野餐树(拼音版)儿童美德故事本文适合有一年级和二年级识词基础的小学生自主阅读朗读。字词句段野餐(ycn)树从前,在一个国家里有一片大树林(dshln),小鸟在树枝上唱歌(chngg),小鹿在草地(cod)上散好玩儿(拼音版)儿童品质故事好玩儿(howner)有个小孩子,他可喜欢玩儿了,一早醒来(xngli)就想玩儿,想我今天上哪儿去玩呀?晚上钻进(zunjn)被窝还想玩儿,想明天我玩点什么(shnme)好呀?这样假腿的熊(拼音版)传奇童话故事本文适合有一年级和二年级识词基础的小学生自主阅读朗读。字词句段假腿的熊从前有个老头儿,有个老太婆。他们种下了萝卜(lubo)。熊老是来偷他们的萝卜(lubo)。老头儿走去看看,只见猴子和鹿(拼音版)儿童美德故事本文适合有一年级和二年级识词基础的小学生阅读朗读。猴子和鹿有一天,猴子碰见(pnjin)了梅花鹿。他们俩呀,都说自己的本领大,说着,说着,吵起架来了。最后决定来个比赛(bsi)。他
甜甜的罗汉果真的能降血糖吗来源中国中医药网罗汉果为葫芦科植物罗汉果的干燥果实,具有清肠胃润肺脾和化痰止咳的功效。其果皮薄,易破,果瓢海绵状,外表浅棕色,泡水喝味道甘甜清香。罗汉果被誉为神奇果,广受大众青睐,药性歌括四百味明代通俗易懂的常用中药介绍药性歌括四百味为明代医家龚廷贤所著,它以四言韵的形式,介绍了400余味常用中药的性味功能主治。其内容简明扼要,通俗易懂,实用性强,押韵和谐,读之朗朗上口,便于诵读记忆,是了解中药知耻辱!中国女篮惨败日本!小组第三创纪录,与韩国争夺世界杯门票北京时间9月8日,女篮亚锦赛U18小组赛最后一场,焦点对决,中国女篮大战日本女篮!这场比赛对于双方而言十分重要,胜者将会夺得小组头名(中国队赢日本队13分以上),不用打附加赛直接晋红旗渠一个县级工程,为何能够代表中国,成为世界第八大奇迹?1974年,新中国参加联合国大会上播放红旗渠纪录片时,这意味着红旗渠将不再是一个工程,而是代表中国人走出国门,展现国民精气神的伟大奇迹。红旗渠工程位于河南安阳林州市,是国家5a级景利好来了!集采靴子落地,8月社融大超预期,风格开始切换开头先扯两句闲篇。人瑞英国女王伊丽莎白二世,终于从历史的见证者,成为了历史,昨天于巴尔莫勒尔城堡逝世,享年96岁(19262022)。而她的儿子查尔斯王子,也终于以73岁的高龄,加皮卡版坦克500?搭载3。0TV6动力三把锁这才是长城最强越野车!在前不久开幕的成都车展上,长城发布了旗下全新的大型皮卡,并且在经过网络征名活动后,该车正式定名为山海炮。新车将搭载3。0TV69AT动力总成,并标配博格华纳4ALOCK四驱系统。此后梅罗时代准备好成为世界焦点吗?姆巴佩我认为我别无选择直播吧9月9日讯近日,姆巴佩接受了华尔街日报的采访,其中谈到了梅罗的话题。姆巴佩我认为你无法复制粘贴他们的生涯来创造历史。梅罗改变了人们对待比赛的方式,我认为这就是为什么梅罗竞争让世界杯头号黑马出炉!4巨星组中轴线,攻守俱佳,阿根廷嗅到不安北京时间9月8日,欧冠小组赛第1轮进行了一场重量级交锋,由那不勒斯在主场迎战利物浦。结果那不勒斯取得了一场大捷,他们以41胜出,将利物浦打懵了。本场比赛,若不是那不勒斯运气稍差,以亚足联支招国足?78岁名帅有望重新回归,或带领国足再冲世界杯北京时间2022年9月7日,国足前主帅米卢迎来自己的78岁生日,亚足联官方也为寿星送出了自己的祝福!对于亚足联的这一操作有两种解释,第一个就是米卢作为世界上比较有名的主教练,曾带领伟大21!世界冠军创历史,女足薪资男足薪资,中国女足怎么看?正文近日结束的一场热身赛中,世界冠军美国女足21力克尼日利亚女足。这场伟大的21赛后,美国女足创历史,通过集体协议最终实现美国男女足国家队同工同薪。对此,中国女足会怎么看?谈到美国秋季出游秋天有落叶大雁南飞秋菊盛开稻谷成熟桂花盛开等景色。1落叶落叶是一种自然现象。秋天,大多数落叶植物和树木开始落叶。叶子是黄色卷曲的。它们从树上掉下来,随风飘动。它也代表着深秋之后的冬