标签:String 备份 路径 DATETIME br MySQL 定时 null
需求在生产中 MySQL备份并返回路径
- MySQL执行备份单个数据库命令是:
参考:https://www.cnblogs.com/kissdodog/p/4174421.html
mysqldump -u用户名 -p密码 --databases 数据库名 > 路径/文件名.sql
- 使用 shell脚本触发并执行MySQL备份命令
参考:https://blog.csdn.net/yuanchangliang/article/details/109312804- 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下测试
标签:String,备份,路径,DATETIME,br,MySQL,定时,null 来源: https://www.cnblogs.com/zk2020/p/16662575.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。