我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!
Posted spring小杨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!相关的知识,希望对你有一定的参考价值。
大家好,我是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小白学习不迷路~~
以上是关于我用几行代码实现了mysql数据库的自动备份,老板说小伙子不错!的主要内容,如果未能解决你的问题,请参考以下文章
我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
老师上课总是不给PPT?于是我用几行python代码偷偷复制U盘文件
YYDS!几行Python代码,就实现了全面自动探索性数据分析
YYDS!几行Python代码,就实现了全面自动探索性数据分析