zoukankan      html  css  js  c++  java
  • 几行代码实现mysql数据库的自动备份

    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-win32inmysqldump.exe" -h%ip% -u%user% -p%password% --default-character-set=utf8 --opt --extended-insert=false  --triggers -R --hex-blob  -x edu>d:db_backupYourDataBaseName.sql  
    echo.
    echo,生成目录d:db_backup\%Today%
    md d:db_backup\%Today%
    move d:db_backupYourDataBaseName.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-win32inmysqldump.exe" 
    -h%ip% -u%user% -p%password% 
    --default-character-set=utf8 
    --opt 
    --extended-insert=false  
    --triggers -R --hex-blob  
    -x YourDataBaseName>d:db_backupYourDataBaseName.sql
     

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

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

    md d:db_backup\%Today%
    move d:db_backupYourDataBaseName.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");
    }
     

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

  • 相关阅读:
    使用System.getProperty方法,如何配置JVM系统属性
    java的System.getProperty()方法可以获取的值
    文档系统
    会议系统
    MyEclipse优化】-----如何合理设置MyEclipse中的validation选项
    myeclipse10 java builder path libraries 添加tomcat
    WPF Step By Step 系列-Prism框架在项目中使用
    【MVVM Light】新手初识MVVM,你一看就会
    Android获取全部存储卡挂载路径
    VME总线
  • 原文地址:https://www.cnblogs.com/skyblue-li/p/15505934.html
Copyright © 2011-2022 走看看