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

2017-06-29  本文已影响0人  DamagedBoy

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) {    }}
上一篇下一篇

猜你喜欢

热点阅读