ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL数据定时备份

2022-09-06 17:34:54  阅读:259  来源: 互联网

标签:String 备份 路径 DATETIME br MySQL 定时 null


需求在生产中 MySQL备份并返回路径

  1. MySQL执行备份单个数据库命令是:
    参考:https://www.cnblogs.com/kissdodog/p/4174421.html
    mysqldump -u用户名 -p密码 --databases 数据库名 > 路径/文件名.sql
  2. 使用 shell脚本触发并执行MySQL备份命令
    参考:https://blog.csdn.net/yuanchangliang/article/details/109312804
  3. Java调用 shell脚本,并返回路径
    参考:https://blog.csdn.net/qq_41893274/article/details/116573250

测试 shell脚本

  • mysql_backups.sh
#! /bin/bash
#完成数据库的定时备份
#备份的路径
BACKUP=/opt/white_duck/db
#当前的时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以输出变量调试
#echo ${DATETIME}
echo "==========开始备份==========="
echo "备份的路径是<$BACKUP/$DATETIME/$DATETIME.sql>"
#用户名
DB_USER=root
#密码
DB_PWD=root
#备份数据库名
DATABASE=white_duck1
#创建备份的路径
#如果备份的路径文件夹存在就使用,否则创建
[ ! -d "$BACKUP/$DATETIME"  ]  && mkdir -p "$BACKUP/$DATETIME"
#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD}  --databases $DATABASE  > $BACKUP/$DATETIME/$DATETIME.sql

#删除30天前的备份文件(-exec rm -rf {} \是固定写法,删除查询出来的数据)
find $BACKUP -mtime +30 -name  "*.sql" -exec rm -rf {} \;
echo "==========备份完成==========="

测试java代码

public class Demo {
    public static String callScript(String script, String args, String... workspace) {
        String cmd = "sh " + script + " " + args;
        File dir = null;
        Process process = null;
        BufferedReader br = null;
        //获取保存后的路径
        String sqlPath = "";
        try {
            if (workspace[0] != null) {
                dir = new File(workspace[0]);
            }
            String[] evnp = {"val=2", "call=Bash Shell"};
            //在指定环境和工作目录的独立进程中执行指定的命令和变量。
            process = Runtime.getRuntime().exec(cmd, evnp, dir);
            //输出shell脚本输出的内容
            br = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = "";
            while ((line = br.readLine()) != null) {
                System.out.println(line);
                //截取获取路径
                if (line.contains("<")) {
                    sqlPath = line.substring(line.indexOf("<") + 1, line.lastIndexOf(">"));
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (process != null) {
                process.destroy();
            }
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return sqlPath;
    }

    public static void main(String[] args) {
        String sqlPath = callScript("mysql_backups.sh", "4", "/opt/");
        System.out.println("path =" + sqlPath);
    }
}
  • 编译成 .class文件放到Linux下测试
    image

标签:String,备份,路径,DATETIME,br,MySQL,定时,null
来源: https://www.cnblogs.com/zk2020/p/16662575.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有