Linux下mysql定时备份脚本以及java实现

sh脚本介绍

#!/bin/bash
#######################################################
# crontab 定时备份#######################################################
backup_dir="/mysql_data_backup"
mkdir -p $BCK_DIRcd $BCK_DIR
touch mysql_back.sh
chmod +x mysql_back.sh
db_name="root"
db_user="root"
db_password="root"
date=`date +%Y%m%d_%H%M%S`
#压缩
mysqldump -u$db_user -p$db_password $db_name | gzip > $backup_dir/$date.sql.gz
#不压缩
mysqldump -u$db_user -p$db_password $db_name > $backup_dir/$date.sql
#删除1天前的数据
#-type f    表示查找普通类型的文件,f表示普通文件。
#-mtime +5   按照文件的更改时间来查找文件,+5表示文件更改时间距现在5天以前;
#如果是 -mmin +5 表示文件更改时间距现在5分钟以前。#-exec rm {} \;   
#表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
find $backup_dir -name "*.sql" -type f -mtime +1 -exec rm {} \;
#命令调用sh脚本,每天下午2点47分#47 14 * * * 
/mysql_data_backup/backup.sh

脚本例子

backup_dir="/mysql_dbbackup/"
db_name="root"
db_user="root"
db_password="root"
date=`date +%Y%m%d_%H%M%S`
cd $backup_dir
mysqldump -u$db_user -p$db_password $db_name | gzip > $date.sql.gz
find $backup_dir -name "*.sql.gz" -type f -mtime +3 -exec rm {} \;

java代码实现

BaseListener监听器

public class BaseListener implements ServletContextListener{
@Override    
public void contextInitialized(ServletContextEvent servletContextEvent) {       
    Properties props=System.getProperties();        
   String osName = props.getProperty("os.name");      
    if(osName.toUpperCase().contains("LINUX")){            
    System.out.println("Linux服务器---->启动mysql定时备份功能...");            
    String dbname="educationapp";            
    String dbuser="root";            
    String dbpassword="jiaowei!@#";          
    String backupdir="";            
backupdir="/mysql_dbbackup/";            
try {                
DbBackUpUtils.mysqlBackUp(dbname,dbuser,dbpassword,backupdir);           
 } catch (IOException e) {        
        e.printStackTrace();        
    }            
Calendar calendar = Calendar.getInstance();            calendar.set(Calendar.HOUR_OF_DAY, 3);//控制小时            calendar.set(Calendar.MINUTE, 0);//控制分钟            calendar.set(Calendar.SECOND, 0);//控制秒           
 Date time = calendar.getTime();   
         Timer t=new Timer(true);           
 t.schedule(new TimerTask() {            
    @Override               
 public void run() {                   
 try {                       
 Runtime runtime = Runtime.getRuntime();                        
runtime.exec("/mysql_dbbackup/mysql_back.sh");                   
 } catch (IOException e) {     
                   e.printStackTrace();    
                }      
          }          
  }, time,24*60*60*1000);        }    }    
@Override    
public void contextDestroyed(ServletContextEvent servletContextEvent) {    }}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,081评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 我惊叹于击剑带给我的快乐。 从前那个800米测试都能跑出一嗓子血腥味的腊鸡。现在已经是一个赖在剑道上不肯下...
    Emilia丫头阅读 1,247评论 0 1
  • 勇氣,用來表達自己的立場想法或用來努力突破眼前的困境。 帶不帶種?世界給你某些教導,非要你一起做,才叫做帶種:說謊...
    YNC再寫一篇阅读 164评论 0 0