我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!

javase 同时被 2 个专栏收录
27 篇文章 0 订阅
2 篇文章 0 订阅

大家好,我是Spring小杨,一个有梦想的Java司机。

1.事件起因

就是之前服务器上用的是mysql数据库,因为小公司嘛,也没有专门的运维。我们几个苦逼的开发都是即当业务,又干开发,还要做测试和运维,别提多悲催了。
在这里插入图片描述
因为出过生产事故,后来兼顾运维的同事只好每天手动去备份。
备份很简单,就是用navicat。
在这里插入图片描述
这个玩意,相信大家都用过吧,里面有一个导出数据库的功能,会导出一个xxx.sql。

然后,我们会在电脑上弄一个文件夹,改一下sql的文件名,比如backup20211011.sql。

问题是,每天都手动去备份一下,是真的很麻烦啊。

后来,我灵机一动,说我给你写个脚本吧,你放到服务器上,以后就不用天天手动去备份了。

在这里插入图片描述

2.BAT脚本备份mysql

废话不多说,直接上脚本:

echo off     
for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do (   
set t=%%a   
)
set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2% 
echo,%Today%         
echo.
"E:\mysql-5.5.31-win32\bin\mysqldump.exe" -h%ip% -u%user% -p%password% --default-character-set=utf8 --opt --extended-insert=false  --triggers -R --hex-blob  -x edu>d:\db_backup\YourDataBaseName.sql  
echo.
echo,生成目录d:\db_backup\%Today%
md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%
echo,备份完毕

就是用cmd命令实现了mysql的备份,这样子。
小杨在这边给大家稍微解释一下关键的命令。

set ip=127.0.0.1
set user=root
set password=123
set Today=%t:~0,4%-%t:~4,2%-%t:~6,2% 

这几行是设置IP,用户名和密码。Today就是今天的日期,用来生成文件夹的。

"E:\mysql-5.5.31-win32\bin\mysqldump.exe" 
-h%ip% -u%user% -p%password% 
--default-character-set=utf8 
--opt 
--extended-insert=false  
--triggers -R --hex-blob  
-x YourDataBaseName>d:\db_backup\YourDataBaseName.sql  

再看这几行,其中 E:\mysql-5.5.31-win32\bin\mysqldump.exe 是我们电脑mysqldump执行文件的绝对路径,就在你安装mysql的目录里面。 然后就是你数据库的名字:YourDataBaseName。

生成该数据库的脚本文件后,会保存到 d:\db_backup 目录里面。

md d:\db_backup\%Today%
move d:\db_backup\YourDataBaseName.sql d:\db_backup\%Today%

最后,就是生成日期文件夹,比如20211011,然后用move命令把刚才生成的脚本文件移动到这个文件夹中,就大功告成啦!

在这里插入图片描述

3. 写Java定时任务部署到服务器

最后一步,就是写一个Java定时任务,定时去调这个bat脚本,就完事了。

我用的是Hutool定时任务工具。
在这里插入图片描述

核心代码我也贴出来给大家:

public void mysqlBackup(){
    System.out.println("mysql备份 开始...");
    RuntimeUtil.exec("cmd.exe /c start  C:/mysql_backup.bat");
    try {
		Thread.sleep(5000);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
    RuntimeUtil.exec("taskkill /f /im cmd.exe");
}

哈哈,简单不?几行代码就搞定了!

这种方式我之前写过一篇教程,可以参考:

我用java写了个定时工具沾沾自喜,结果发现小丑竟是我自己!

总体来说还是相当简单的,但是作用却很大,终于不用每天手动去备份啦~~

热门推荐:
六年Java程序员,一路走来的辛酸泪! 【工作篇】

Java基础教程系列:
【❤️Java入门超简单❤️】JavaSE初级教程整合篇,全部手敲,每一节代码都验证可行(建议新人收藏)

我是Spring小杨,一个有梦想的Java司机,关注我,Java小白学习不迷路~~

<p style="text-align:left;"> <span> </span> </p> <p class="ql-long-24357476" style="font-size:11pt;color:#494949;"> <span style="font-family:"color:#E53333;font-size:14px;background-color:#FFFFFF;line-height:24px;"><span style="line-height:24px;">限时福利1:</span></span><span style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;">购课进答疑群专享柳峰(刘运强)老师答疑服务。</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <strong><span style="color:#337FE5;font-size:14px;">为什么每一个程序员都应该学习MySQL?</span></strong> </p> <p class="ql-long-24357476"> <span style="font-size:14px;">根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使MySQL数据库。</span> </p> <p class="ql-long-24357476"> <img src="https://img-bss.csdn.net/202003301212574051.png" alt="" /> </p> <p class="ql-long-24357476"> <span style="font-size:14px;">使量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使和原理有深入的了解和掌握。</span><br /> <br /> <span style="font-size:14px;">学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!</span> </p> <span></span> <p> <br /> </p> <p> <span> </span> </p> <h3 class="ql-long-26664262"> <p style="font-size:12pt;"> <strong class="ql-author-26664262 ql-size-14"><span style="font-size:14px;color:#337FE5;">【课程设计】</span></strong> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;"><br /> </span> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;font-size:14px;">在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。</span> </p> <p style="font-size:12pt;"> <span style="color:#494949;font-weight:normal;"><br /> </span> </p> <p style="font-size:12pt;"> <span style="font-weight:normal;font-size:14px;">本课程包含3大模块:</span><span style="font-weight:normal;font-size:14px;"> </span> </p> </h3> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">一、基础篇:</span></strong> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;">主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;"><br /> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">二、SQL语言篇</span></strong><span class="ql-author-26664262" style="font-size:14px;">:</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span class="ql-author-26664262" style="font-size:14px;">本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,</span><span style="font-size:14px;">学会熟练对库表进行增删改查等必备技能。</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"><br /> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <strong class="ql-author-26664262"><span style="font-size:14px;">三、MySQL进阶篇</span></strong><span style="font-size:14px;">:</span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <span style="font-size:14px;">本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。</span> </p> <span><span> <p style="font-size:11pt;color:#494949;"> <span style="font-size:14px;"> </span><img src="https://img-bss.csdn.net/202004220208351273.png" alt="" /> </p> </span></span>
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值