Springboot Java启动调用Shell脚本实现MySQL数据库备份
编写Java启动脚本方法
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
@RestController
public class ShellController {
@RequestMapping(value = "/executeShell")
public void executeShell(){
try {
String shpath="/opt/soft/shell/backup_database.sh";
Process ps = Runtime.getRuntime().exec(shpath);
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("开始执行时间 = " + df1.format(new Date()));
ps.waitFor();
SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("结束执行时间 = " + df2.format(new Date()));
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
String result = sb.toString();
System.out.println(result);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
编写导出MySQL数据的Shell脚本
#!/bin/bash
dbuser='root'
dbpasswd='root'
dbname='spacecenter'
backtime=`date +%Y%m%d%H%M%S`
logpath='/opt/soft/mysqlbackup/backup_logs'
datapath='/opt/soft/mysqlbackup/backup_data'
mysqldump -u ${dbuser} -p${dbpasswd} ${dbname} > "${datapath}/${dbname}"-"${backtime}.sql" 2>> ${logpath}/mysqllog.log;
if [ "$?" == 0 ];then
cd $datapath
tar czf "${dbname}"-"${table}"-"${backtime}.tar.gz" "${dbname}"-"${backtime}.sql" > /dev/null
rm -f "${datapath}/${dbname}"-"${backtime}.sql"
find $datapath -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo ${backtime}-"数据库 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
else
echo ${backtime}-"数据库 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
fi
问题总结
logpath='/opt/soft/mysqlbackup/backup_logs'
datapath='/opt/soft/mysqlbackup/backup_data'