java实现数据库备份与恢复
前言
为了应对项目中数据库突然奔溃,导致丢失数据,这时可以通过代码实现数据库的定时备份与恢复,即使数据库宕机了,我们也可以将之前备份好的数据信息还原到数据库。通过java代码实现数据库的备份与恢复,其实就是通过java代码操作命令行。
那么如何实现数据库的备份与恢复呢,下面案例可供参考。
一、数据库备份
/*** 数据库文件备份*/@RequestMapping("/doBackup")public R doBackup(){System.out.println("现在时间是"+new Date());Runtime runtime = Runtime.getRuntime(); //获取Runtime实例String database1 = "equipments"; // 需要备份的数据库名Date currentDate = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");String sdfDate = sdf.format(currentDate);String filepath = "d:\\sql\\time_" + sdfDate + ".sql"; // 备份的路径地址//执行命令(此处需要定位到mysqldump.exe路径,--default-character-set=gbk是为了解决中文乱码问题)String stmt = "d:\\wamp64\\bin\\mysql\\mysql5.7.24\\bin\\mysqldump -h localhost -uroot -p12345678 --default-character-set=gbk "+database1+" > "+filepath;System.out.println(stmt);try {String[] command = { "cmd", "/c", stmt};Process process = runtime.exec(command);InputStream input = process.getInputStream();System.out.println(IOUtils.toString(input, "UTF-8"));//若有错误信息则输出InputStream errorStream = process.getErrorStream();System.out.println(IOUtils.toString(errorStream, "gbk"));//保存备份数据信息到数据库中SqlFileEntity sqlFileEntity = new SqlFileEntity();sqlFileEntity.setName("time_" + sdfDate + ".sql");sqlFileEntity.setPath(filepath);sqlFileEntity.setCreateTime(currentDate);this.save(sqlFileEntity);} catch (IOException e) {e.printStackTrace();}return R.ok();}
二、数据库恢复
/*** 还原数据库*/@RequestMapping("/restore")public R restore(@RequestBody String filename) {String database = "equipments"; // 需要备份的数据库名System.out.println("现在时间是" + new Date());Runtime runtime = Runtime.getRuntime();try {String filePath = "d:\\sql\\"+filename; // sql文件路径String stmt = "mysql -h localhost -uroot -p12345678 "+database+"< " + filePath;System.out.println(stmt);String[] command = {"cmd", "/c", stmt};Process process = runtime.exec(command);//若有错误信息则输出InputStream errorStream = process.getErrorStream();System.out.println(IOUtils.toString(errorStream, "gbk"));//等待操作int processComplete = process.waitFor();if (processComplete == 0) {System.out.println("还原成功.");} else {throw new RuntimeException("还原数据库失败.");}} catch (Exception e) {e.printStackTrace();}return R.ok();}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了java代码实现数据库的备份与恢复,如果要实现数据库的定时备份与恢复,还需要编写定时器或者定时任务,将数据库的备份与恢复添加到定时任务中即可。
java实现数据库备份与恢复相关推荐
- 在sqlyog进行数据库的备份_MySQL数据库备份与恢复(收藏+1)
MySQL数据库备份与恢复 尽管采取了一些管理措施来保证数据库的安全,但是在不确定的意外情况下,总是有可能造成数据的损失. 例如,意外的停电,不小心的操作失误等都可能造成数据的丢失. 所以为了保证数据 ...
- 在sqlyog进行数据库的备份_MYSQL数据库备份与恢复(收藏)
MySQL数据库备份与恢复 尽管采取了一些管理措施来保证数据库的安全,但是在不确定的意外情况下,总是有可能造成数据的损失. 例如,意外的停电,不小心的操作失误等都可能造成数据的丢失. 所以为了保证数据 ...
- 将前台日期格式转成与数据库日期格式相对应,后台java转数据库日期格式
前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name=&q ...
- Java获取数据库表的字段信息,及如何将ResultSet转为json
为什么80%的码农都做不了架构师?>>> 一.Java获取数据库表的各个字段的相关信息 在某些开发情景中,需要获取数据库中表的各个字段的相关信息,如字段名,字段类型,字段大小等 ...
- Oracle数据库备份与恢复的三种方法
Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/ ...
- linux数据库都备份什么,Linux运维学习之数据库备份与恢复
今天给大家带来的是关于数据库备份与恢复的教程,当我们手贱或者不知道什么原因导致数据库的崩溃,甚至删除数据库时怎么办,总不能跑路吧?所以我们做好日常的备份和相关的灾后重建很有必要. 那么备份都有什么方式 ...
- java servlet 数据库_Java Servlet调用数据库复习
首先要导入jar包. 剩下的基本就是模版式的代码了: public class main { // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = ...
- java获取数据库MetaData
java获取数据库MetaData 元数据(MetaData),即数据的描述信息的数据(表).数据库的表的表名,表的属性名,表的存储位置,表的列数啊等等都是表的描述信息,而这些描述信息就是元数据啦 ...
- java 从数据库取值_JAVA操作数据库--从一张表中取值,经过判断,然后插入另一张表中。...
JAVA操作数据库-->从一张表中取值,经过判断,然后插入另一张表中. SQL语句如下:两张表 weather 和 weather_process. id均为自动增长.Oracle中采用序列 S ...
最新文章
- 快速排序(快排)--->注释超详细
- 集成学习python_从Boosting到Stacking,概览集成学习的方法与性能
- auto.js停止所有线程_十年架构师带你快速上手多线程
- iOS判断是模拟器还是真机
- Ribbon-2通过代码自定义配置ribbon
- android前台进程视频教程,Android Twilio视频通话,唤醒应用程序并进入前台
- java读取yaml配置文件,snakeyaml读取yaml配置文件
- java实现linux变量替换_linux java 配置 含环境变量 | 学步园
- Lesson6 how to use HTML QT Widgets
- 【转】缺少servlet-api.jar包
- OSPF中 HELL0包解析
- 局域网服务器共享文件夹设置,局域网服务器共享文件访问权限管理方法
- win7计算机管理没有用户模块,Win7系统下安装ipx协议提示找不到相应的模块如何解决...
- arduino入门-用arduino uno制作基于蓝牙的数据监控系统
- 使用计算机求解问题首先要,基于计算机的问题求解,首先要完成的是( )
- 硬核 | Redis Pub/Sub 发布订阅与宅男有什么关系?
- 盖茨基金会:全球至少要到2108年才能实现性别平等,比期望晚了三代人 | 美通社头条...
- 来自Bitly的USA.gov数据
- Django 数据库相关操作 (六)
- CSAPP第三章(续)