Java操作Linux指令,实现恢复、备份MySQL数据库
备份数据库指令:
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.exe
和 mysql.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数据库相关推荐
- Linux服务器上备份mysql数据库(详细教程)
废话不多说,直接上教程 首先使用 mysql -V 查看服务器是否安装了mysql,没有一定要安装,因为脚本编写中需要mysql命令进行备份. 安装详细教程请移步看:Linux服务器装mysql数 ...
- mysql设置停止二进制文件的操作_window下使用二进制文件对mysql数据库备份及恢复(再现用户操作)...
1,查看二进制日志文件是否启用 mysql>show variables like 'log_bin'; 如果未启用,则启用二进制文件(默认是关闭的 ) 2,在mysql的配置文件[mysqld ...
- linux备份mysql怎样操作,Linux下自动备份MySQL数据库详细操作步骤(转载)
环境说明 操作系统:CentOS IP:192.168.150.214 Oracle数据库版本:Oracle11gR2 用户:root 密码:123456 端口:3306 数据库:ts_0.ts_1. ...
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐) vs lang ...
- linux php mysqldump,Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用) 设计该脚本的一些设计.编写考虑: 利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使 ...
- java操作linux命令
java命令操作linux指令 参考 import java.io.*; public class Test{public static void main(String[] args) throws ...
- Java调用linux指令工具类,直接执行cmd,执行grep指令返回结果,执行sed追加指令,hdfs下载指令,获取文件行数
Java调用linux指令工具类,直接执行cmd,执行grep指令返回结果,执行sed追加指令,hdfs下载指令,获取文件行数 问题背景 LinuxUtils工具类 Lyric:梦想挟带眼泪 问题背景 ...
- linux定时备份数据库到远程ftp,Linux下自动备份MySQL数据库并上传到远程FTP服务器...
Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库到 ...
- Linux自动备份MySQL数据库脚本代码
Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...
最新文章
- 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)
- Softmax学习笔记
- GNU make manual 翻译( 一百零九)
- 快速开发工作流_02_集成在线流程设计器
- mapbox矢量切片标准_Cesium 加载矢量切片(MapBox Vector Tile)
- verilog学习记(测试和验证)
- python matlibplot_python matlibplot绘制3D图形
- 【电脑帮助】解决Wind10系统每次运行软件时都要出现提示框的问题
- 集合类型及其操作(复习)
- day11 内置函数
- java培训出来能干什么_Java培训出来一般都可以干什么工作
- 资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库
- 一切过往皆序章,一切未来皆可期——2021给自己定个小目标:读完52本书
- 无光照渲染shader-二次元
- RT-Thread学习笔记|TCS34725 RGB 颜色识别传感器详解
- 编程思想总结 - 堆排序,少做无用功
- CSS3 ime-mode 属性
- python爬虫(云打码平台)
- 在IDEA中使用MCR调用运行matlab代码
- 2022年证券从业资格投资顾问考试每日一练及答案