MySQL数据定时备份
2022/9/8 2:24:30
本文主要是介绍MySQL数据定时备份,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
需求在生产中 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下测试
这篇关于MySQL数据定时备份的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程