栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot Java启动调用Shell脚本实现MySQL数据库备份

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot Java启动调用Shell脚本实现MySQL数据库备份

Springboot Java启动调用Shell脚本实现MySQL数据库备份
    • 编写Java启动脚本方法
    • 编写导出MySQL数据的Shell脚本
    • 问题总结

编写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 {
            //Shell脚本位置
            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"
#删除七天前备份,也就是只保存7天内的备份
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'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号