美文网首页
Linux下mysql定时备份脚本以及java实现

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

作者: DamagedBoy | 来源:发表于2017-06-29 23:31 被阅读0次

    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) {    }}
    

    相关文章

      网友评论

          本文标题:Linux下mysql定时备份脚本以及java实现

          本文链接:https://www.haomeiwen.com/subject/suurbttx.html