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