备份数据库指令:

mysqldump -h127.0.0.1 -uroot -p123456 test > d:/test.sql ---备份test数据库到 D 盘

恢复数据库指令

mysql -h127.0.0.1 -uroot -p123456 test< test.sql ---将D备份的数据库脚本,恢复到数据库中(数据库要存在!)

cmd 或者 shell 调用命令行,其实是调用 MySQL 安装路径下面的 bin 目录下面的 msqldump.exemysql.exe 来完成相应的工作。

下面是使用 Java 代码实现在 Linux 端调用指令:
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;public class DbOperate {public static void dbBackUp(String root, String pwd, String dbName, String backPath, String backName) throws Exception {String pathSql = backPath + backName;File fileSql = new File(pathSql);if (!fileSql.exists()){fileSql.createNewFile();}StringBuffer sb = new StringBuffer();sb.append("mysqldump");sb.append(" -h127.0.0.1");sb.append(" -P3306");sb.append(" -u" + root);sb.append(" -p" + pwd);sb.append(" " + dbName + ">");sb.append(pathSql);System.out.println("cmd命令为:" + sb.toString());Runtime runtime = Runtime.getRuntime();System.out.println("开始备份:" + dbName);String[] command = {"/bin/sh", "-c", sb.toString()};
//        Process process = runtime.exec("/bin/sh -c " + sb.toString());Process process = runtime.exec(command);System.out.println(process.waitFor());System.out.println("备份成功!!!!!");}public static void dbRestore(String root, String pwd, String dbName, String filePath){StringBuffer sb = new StringBuffer();sb.append("mysql");sb.append(" -h127.0.0.1");sb.append(" -P3306");sb.append(" -u" + root);sb.append(" -p" + pwd);sb.append(" " + dbName + "<");sb.append(filePath);System.out.println("cmd命令为:" + sb.toString());Runtime runtime = Runtime.getRuntime();System.out.println("开始恢复:" + dbName);try {String[] command = {"/bin/sh", "-c", sb.toString()};Process process = runtime.exec(command);//Process process = runtime.exec("/bin/sh -c " + sb.toString());InputStream is = process.getInputStream();BufferedReader bf = new BufferedReader(new InputStreamReader(is, "utf8"));String line = null;while ((line = bf.readLine()) != null){System.out.println(line);}is.close();bf.close();}catch (IOException e){e.printStackTrace();}System.out.println("还原成功!!!!!");}public static void main(String[] args) throws Exception {String backName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".sql";//DbOperate.dbBackUp("root", "root", "db_other", "/hadoop/", backName);DbOperate.dbRestore("root", "root", "db_sssss", "/hadoop/2021-11-30-11-41-25.sql");}
}

经过测试,必须将 command 放到一个数组里面,才能将指令执行成功

linux下:
String[] command = { "/bin/sh", "-c", command };Process ps = Runtime.getRuntime().exec(command );
windows下:
String[] command = { "cmd", "/c", command};Process ps = Runtime.getRuntime().exec(command );

参考文献1

参考文献2

参考文献3

Java操作Linux指令,实现恢复、备份MySQL数据库相关推荐

  1. Linux服务器上备份mysql数据库(详细教程)

    废话不多说,直接上教程 首先使用  mysql -V  查看服务器是否安装了mysql,没有一定要安装,因为脚本编写中需要mysql命令进行备份. 安装详细教程请移步看:Linux服务器装mysql数 ...

  2. mysql设置停止二进制文件的操作_window下使用二进制文件对mysql数据库备份及恢复(再现用户操作)...

    1,查看二进制日志文件是否启用 mysql>show variables like 'log_bin'; 如果未启用,则启用二进制文件(默认是关闭的 ) 2,在mysql的配置文件[mysqld ...

  3. linux备份mysql怎样操作,Linux下自动备份MySQL数据库详细操作步骤(转载)

    环境说明 操作系统:CentOS IP:192.168.150.214 Oracle数据库版本:Oracle11gR2 用户:root 密码:123456 端口:3306 数据库:ts_0.ts_1. ...

  4. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js

    atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐)  vs   lang  ...

  5. linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)

    利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用) 设计该脚本的一些设计.编写考虑: 利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使 ...

  6. java操作linux命令

    java命令操作linux指令 参考 import java.io.*; public class Test{public static void main(String[] args) throws ...

  7. Java调用linux指令工具类,直接执行cmd,执行grep指令返回结果,执行sed追加指令,hdfs下载指令,获取文件行数

    Java调用linux指令工具类,直接执行cmd,执行grep指令返回结果,执行sed追加指令,hdfs下载指令,获取文件行数 问题背景 LinuxUtils工具类 Lyric:梦想挟带眼泪 问题背景 ...

  8. linux定时备份数据库到远程ftp,Linux下自动备份MySQL数据库并上传到远程FTP服务器...

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库到 ...

  9. Linux自动备份MySQL数据库脚本代码

    Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...

最新文章

  1. 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)
  2. Softmax学习笔记
  3. GNU make manual 翻译( 一百零九)
  4. 快速开发工作流_02_集成在线流程设计器
  5. mapbox矢量切片标准_Cesium 加载矢量切片(MapBox Vector Tile)
  6. verilog学习记(测试和验证)
  7. python matlibplot_python matlibplot绘制3D图形
  8. 【电脑帮助】解决Wind10系统每次运行软件时都要出现提示框的问题
  9. 集合类型及其操作(复习)
  10. day11 内置函数
  11. java培训出来能干什么_Java培训出来一般都可以干什么工作
  12. 资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库
  13. 一切过往皆序章,一切未来皆可期——2021给自己定个小目标:读完52本书
  14. 无光照渲染shader-二次元
  15. RT-Thread学习笔记|TCS34725 RGB 颜色识别传感器详解
  16. 编程思想总结 - 堆排序,少做无用功
  17. CSS3 ime-mode 属性
  18. python爬虫(云打码平台)
  19. 在IDEA中使用MCR调用运行matlab代码
  20. 2022年证券从业资格投资顾问考试每日一练及答案

热门文章

  1. Python 高级编程
  2. cad制图坐标系转换为地理坐标系
  3. matlab 微积分计算 自用1
  4. 表情搜索 api数据接口
  5. Android自定义键盘详解、自定义输入法简介
  6. Vue3商店后台管理系统设计文稿篇(五)
  7. 电脑迷你世界,迷你世界手游电脑版
  8. 解决Clock skew detected
  9. 锂电池保护专用MOS管2-17串选型-KIA MOS管
  10. Win11升级后Edge打不开解决办法