JAVA实现数据库备份与还原

合集下载

java 备份调用设计 -回复

java 备份调用设计 -回复

java 备份调用设计-回复所谓的"备份调用设计" 是指在软件开发中,设计和实现一个可靠和高效的数据备份系统,并通过调用相应的函数或方法来实现备份操作。

这个系统的目的是确保数据的安全性和可恢复性,以及为用户提供方便和快速的数据恢复能力。

备份调用设计涉及到以下几个方面的考虑:1. 数据备份策略:在设计备份调用系统时,首先需要确定备份策略。

这包括确定备份的频率、备份的方式(完整备份还是增量备份)、备份的存储介质等。

根据应用的具体需求和数据的重要性,选择合适的备份策略可以有效地提高备份系统的效率和性能。

2. 调用备份函数或方法:在设计备份调用系统时,需要开发相应的函数或方法,以便在需要备份数据时调用。

这些函数或方法应该能够接收数据作为输入,并将其备份到指定的位置。

备份函数或方法还应该提供一些选项,例如指定备份目录、备份文件名、备份格式等。

调用备份函数或方法可以通过编程语言的API接口、命令行工具或图形用户界面等方式实现。

3. 备份数据存储:备份数据的存储是备份调用设计的关键部分之一。

备份数据可以存储在本地磁盘、网络存储设备或云存储平台等不同的位置。

根据备份策略和数据的大小,选择适当的存储介质可以提高备份系统的性能和可靠性。

同时,还需要考虑备份数据的压缩和加密,以确保数据的安全性和节省存储空间。

4. 数据恢复调用:在设计备份调用系统时,还需要考虑数据恢复的问题。

备份调用系统应该提供相应的函数或方法,以便在需要恢复数据时进行调用。

这些函数或方法应该能够根据备份策略和用户的需求,从备份数据中选择指定的文件或目录进行恢复。

数据恢复调用可以通过类似于备份调用的方式实现,但需要额外的功能,例如文件选择界面、恢复路径设置等。

5. 监控和报告:备份调用系统应该提供监控和报告功能,以便管理员和用户了解备份的状态和进展。

这包括备份进程的实时监控、备份任务的计划和执行情况报告等。

监控和报告可以通过日志记录、邮件通知或图形用户界面等方式实现,以便及时发现和解决备份调用系统中的问题。

数据库备份与恢复操作步骤总结

数据库备份与恢复操作步骤总结

数据库备份与恢复操作步骤总结数据库备份和恢复是重要的数据库管理任务,用于保护和恢复数据。

合理的备份策略可以最大程度地减少数据丢失的风险,并确保在数据丢失情况下能够快速有效地进行数据恢复。

本文将简要总结数据库备份和恢复的操作步骤。

一、数据库备份操作步骤1. 确定备份类型:全量备份、增量备份或差异备份。

全量备份:备份整个数据库,需要较长时间和更多的存储空间。

适用于首次备份或周期性备份。

增量备份:只备份上次全量备份后的新数据。

备份过程较快,但恢复时需要多个备份文件。

适用于频繁备份。

差异备份:备份上次全量备份后的发生变化的数据。

恢复时只需要全量备份和最近的差异备份,中间备份可以忽略。

根据实际需求选择合适的备份类型。

2. 设定备份计划:确定备份的时间(如每天凌晨)和备份的频率(每天、每周等)。

制定合理的备份计划可以确保数据的及时备份,减少数据风险。

3. 选择备份工具:选择符合需求的数据库备份工具或脚本。

主流数据库(如MySQL、Oracle)都有相应的备份工具和命令,可根据实际情况选择合适的工具。

4. 执行备份命令:根据选择的备份工具执行备份命令。

备份命令通常包括备份路径、备份文件名等参数,确保备份文件存储在可靠的位置。

5. 验证备份完整性:备份完成后,验证备份文件的完整性和可用性。

可以通过恢复部分数据或检查备份文件的相关信息来验证备份的完整性。

6. 及时存储备份文件:将备份文件移动到安全的存储位置,以防止误删除或数据丢失。

二、数据库恢复操作步骤1. 确定恢复方式:根据需求确定恢复的方式,包括全量恢复、部分恢复或点恢复。

全量恢复:使用最近的全量备份进行恢复,并重新应用增量备份或差异备份。

部分恢复:恢复特定的数据库表、数据文件等。

点恢复:将数据库恢复到某个特定的时间点,适用于严重错误后的数据恢复。

2. 准备备份文件:确定备份文件的位置和名称,以备恢复时使用。

3. 执行恢复命令:根据数据库备份工具的命令,执行相应的恢复命令。

数据库常用的备份和恢复方法

数据库常用的备份和恢复方法

数据库常用的备份和恢复方法1. 数据库备份方法:使用数据库管理系统自带的备份工具,比如MySQL的mysqldump 命令、SQL Server的备份与还原工具、Oracle的RMAN等。

2. 备份恢复方法:通过数据库管理系统自带的还原工具进行数据库的恢复操作,还原到备份的状态。

3. 使用备份数据库文件:将数据库文件完整拷贝到另一个地方,以便在需要时进行恢复。

4. 使用数据库复制:通过数据库复制功能实现备份,比如MySQL的主从复制、SQL Server的数据库镜像等。

5. 使用第三方备份工具:如Acronis Backup、Veeam Backup等第三方软件来进行数据库备份。

6. 使用文件系统级别的备份:直接备份数据库所在的文件系统,这种方法需要确保数据库处于非活动状态。

7. 冷备份:在数据库服务未运行的情况下进行备份,确保备份文件的完整性。

8. 热备份:在数据库服务正在运行的情况下进行备份,能够实现数据库的连续性。

9. 定时自动备份:通过定时任务或其他调度工具定期对数据库进行备份,确保备份的及时性。

10. 增量备份:仅备份数据库中发生变化的部分数据,从而减少备份数据的大小和时间。

11. 差异备份:备份数据库自上次完整备份之后发生变化的部分数据,比增量备份更快,但恢复时需要依赖上次的完整备份。

12. 完整备份:备份整个数据库的数据和结构,是最基本的备份方法。

13. 数据库备份到云存储:将数据库备份文件上传至云存储服务,保证备份的安全性和可靠性。

14. 数据库备份加密:对备份文件进行加密,增加备份文件的安全性。

15. 数据库备份压缩:对备份文件进行压缩,减小备份文件的大小,节省存储空间。

16. 数据库备份验证:对备份文件进行验证,确保备份文件的完整性和可恢复性。

17. 数据库备份日志记录:记录备份的相关信息,如备份时间、备份状态、备份文件位置等,便于管理和追踪备份操作。

18. 数据库备份监控:通过监控系统对数据库备份进行实时监控,确保备份的正常进行。

Java版本db2数据库的备份还原

Java版本db2数据库的备份还原

1、windows下使用db2客户端下备份还原Windows下用db2客户端备份还原的方法,db2的工程师说不推荐使用,因为局限性挺大,而且可能会出现还原了以后使用不了的问题。

以下几个地方是需要注意的:1、源数据库和目标数据库的数据库名称必须一致2、访问源数据库和目标数据库的用户名(操作系统用户)必须一致1.1 备份数据库1、打开db2的控制中心,展开“所有数据库”,找到要备份的库,右键:备份,弹出以下界面:2、直接下一步,点“添加”会弹出选择备份文件的路径,比如选择D盘的根目录:3、点“确定”,然后一直“下一步”,到最后,点完成,显示以下内容:备份的时间可能会比较长,请耐心等待……4、上面的图示,表示备份成功,备份完了之后,会在刚才选择的路径下生成一个名字很长的文件,如:注意:这个文件名称里面包含时间戳信息,千万不能修改!1.2 还原1、在“计算机管理”-“本地用户和组”-“用户”里首先需要创建一个操作系统用户:ecgap,密码也是ecgap2、用命令创建一个库和表空间等:打开命令窗口,输入db2cmd,确定3、逐条输入以下5条命令:①.先创建ecgap数据库db2 create db ecgap using codeset gbk territory cn collate using system pagesize 32768②.连接ecgap库db2 connect to ecgap③.将ecgap用户赋给当前库db2 grant dataaccess on database to user ecgap④.创建缓冲池db2 create bufferpool bp32 immediate size 10000 automatic pagesize 32k db2 create bufferpool bp8 immediate size 10000 automatic pagesize 8k⑤.创建表空间db2 create large tablespace ts32 pagesize 32k managed by automatic storage bufferpool bp32db2 create large tablespace ts8 pagesize 8k managed by automatic storage bufferpool bp84、以上执行完毕之后,打开db2的控制中心5、在“所有数据库”上右键:刷新把创建的新数据库:ecgap刷新出来。

基于Java的数据库备份与恢复系统设计与实现

基于Java的数据库备份与恢复系统设计与实现

基于Java的数据库备份与恢复系统设计与实现问题:基于Java的数据库备份与恢复系统设计与实现回答:1. 系统设计概述数据库备份与恢复系统是一个用于保护数据库数据完整性和可用性的关键工具。

它通过定期备份数据库,并提供恢复功能,以便在发生数据丢失或损坏的情况下能够快速恢复数据库到先前的状态。

基于Java的数据库备份与恢复系统通过结合Java编程语言和数据库管理系统的特性,实现了高效、可靠和易于使用的备份与恢复功能。

2. 系统组成和功能基于Java的数据库备份与恢复系统可以分为两个主要模块:备份模块和恢复模块。

备份模块负责定期执行数据库备份操作。

它首先与数据库管理系统进行通信,获取数据库的元数据和数据。

然后,它使用Java的文件操作功能将获取到的数据保存到指定的备份文件中。

备份模块还可以支持增量备份和差异备份,以提高备份效率和减少备份文件的大小。

此外,备份模块还可以提供备份计划的管理功能,允许用户根据自己的需求灵活地设置备份频率和存储位置。

恢复模块负责在需要恢复数据库时执行相应的恢复操作。

它首先与备份模块进行通信,获取可用的备份文件列表。

然后,用户可以选择要恢复的数据库备份文件,并指定恢复的目标位置。

恢复模块会使用Java的文件操作功能将备份文件的数据恢复到目标位置,并与数据库管理系统进行交互,更新数据库的元数据和数据,以确保数据库恢复到指定的状态。

3. 技术实现细节基于Java的数据库备份与恢复系统可以使用以下技术实现:- Java编程语言:通过使用Java编程语言,可以轻松实现与数据库管理系统的交互、文件操作和用户界面等功能。

Java的跨平台特性也使得系统可以在不同的操作系统上运行。

- 数据库管理系统API:根据所使用的数据库管理系统,可以使用相应的API 与数据库进行通信。

例如,如果使用MySQL数据库,可以使用MySQL Connector/J库来连接和操作MySQL数据库。

- 文件操作:Java提供了丰富的文件操作功能,可以通过读取和写入文件来实现数据库备份和恢复的过程。

文件备份恢复机制java代码

文件备份恢复机制java代码

文件备份恢复机制一、背景介绍文件备份恢复机制是计算机系统中用于保护数据安全的重要组成部分。

在现代社会中,数据的重要性越来越被人们所重视,因此及时备份和恢复数据成为了一项必要而关键的工作。

本文将详细探讨文件备份恢复机制的实现原理和Java代码实现方法。

二、文件备份机制的原理文件备份机制是指将数据从一个位置复制到另一个位置,以便在原始数据丢失或损坏时进行恢复。

在文件备份机制中,需要考虑以下几个方面:2.1 备份策略的选择备份策略是指选择何时备份文件以及备份多少份的决策。

常见的备份策略包括完整备份、增量备份和差异备份。

完整备份是将源文件的所有数据复制到备份位置,增量备份是只备份自上次备份以来修改过的文件,差异备份是只备份自上次完整备份以来被修改过的部分。

2.2 备份源和备份目标的选择备份源是指需要备份的文件或目录,可以是单个文件、整个目录,甚至是整个硬盘。

备份目标是指备份文件存放的位置,可以是本地磁盘、网络存储设备或云存储等。

2.3 备份频率的设定备份频率是指备份操作的执行间隔,根据备份策略的不同,备份频率可以是每天、每周、每月甚至更长。

2.4 备份方式的选择备份方式是指备份操作的具体实现方法。

常用的备份方式包括全量备份、增量备份和镜像备份。

三、文件恢复机制的实现文件恢复机制是指在数据丢失或损坏的情况下,通过备份数据进行恢复的方法。

文件恢复机制需要考虑以下几个方面:3.1 恢复策略的选择恢复策略是指根据实际情况选择何时进行数据恢复以及恢复的方式。

常用的恢复策略包括一致性恢复、增量恢复和差异恢复。

3.2 恢复源和恢复目标的确定恢复源是指备份文件存放的位置,恢复目标是指恢复后文件存放的位置。

3.3 恢复过程的实现恢复过程是指通过备份数据进行恢复的具体实现方法。

在文件恢复过程中,首先需要通过备份源选择要恢复的文件,然后根据备份目标将文件恢复到指定位置。

3.4 恢复结果的验证恢复结果的验证是指对恢复后的文件进行验证,确保恢复的文件与原始文件一致。

Java应用中的数据备份与恢复

Java应用中的数据备份与恢复数据备份与恢复在任何应用系统中都是至关重要的环节,以确保数据的完整性和可靠性。

针对Java应用来说,数据备份与恢复同样具有重要性。

在本文中,将重点探讨Java应用中的数据备份与恢复的相关技术和方法。

一、数据备份数据备份是指将关键数据复制到另一位置或媒介中,以便在原始数据遭受损坏、丢失或不可恢复的情况下,能够及时恢复系统运行。

下面将介绍几种常见的数据备份方法。

1.1 定期数据库备份在Java应用中,数据库是存储关键数据的重要组成部分。

定期对数据库进行备份是非常重要的一环。

可以通过使用数据库管理工具或编写定时任务来实现定期数据库备份。

备份的频率可根据实际需求进行设定,常见的有每天、每周或每月备份一次。

1.2 离线数据快照备份除了定期数据库备份外,还可以采用离线数据快照备份的方式。

该方式通过将数据快照存储在独立的存储设备中,实现对数据的备份。

这样可以保留不同时间点的数据状态,以便在需要时进行恢复。

1.3 分布式数据备份针对大型Java应用系统,分布式数据备份是一个较为有效的备份策略。

通过将数据分散存储在多个节点上,并实时同步数据变更,可以大大提高数据备份的稳定性和可靠性。

在数据丢失或损坏时,可以从其他节点恢复数据。

二、数据恢复数据恢复是指将备份的数据重新加载到系统中,以恢复原始数据状态。

在Java应用中,数据恢复的方式取决于备份的方式。

2.1 数据库备份恢复对于定期数据库备份的情况,可以通过数据库管理工具或命令行工具恢复数据库。

通常,可以选择从最近的备份中恢复数据,并进行合并或同步操作,以保证系统的数据完整性。

2.2 离线数据快照恢复对于离线数据快照备份的情况,可以将备份时刻的数据快照加载到系统中。

通常,可以选择特定的数据快照,并按照时间顺序逐步恢复数据。

2.3 分布式数据恢复在采用分布式数据备份的情况下,数据恢复涉及到从其他节点获取数据并进行同步。

通常,可以从分布式数据备份系统中选择对应的节点并下载数据,最后进行数据合并以实现完整的数据恢复。

编程技术中的数据备份与恢复策略与方法

编程技术中的数据备份与恢复策略与方法在当今数字化时代,数据已经成为了我们生活和工作中不可或缺的一部分。

对于编程技术而言,数据的备份与恢复策略与方法显得尤为重要。

因为无论是在开发过程中还是在实际应用中,数据的丢失都可能导致灾难性的后果。

因此,我们需要采取一些策略和方法来保护数据的安全性和可恢复性。

一、数据备份的重要性数据备份是指将数据从一个地方复制到另一个地方,以防止数据丢失的措施。

在编程技术中,数据备份的重要性不言而喻。

首先,备份可以保护数据免受硬件故障的影响。

硬盘故障是常见的问题,如果没有备份,一旦硬盘损坏,数据将无法恢复。

其次,备份可以防止人为错误导致的数据丢失。

开发人员可能会因为疏忽或错误操作而删除或修改重要数据,备份可以帮助恢复到之前的状态。

此外,备份还可以应对恶意软件攻击、自然灾害等情况,确保数据的安全性。

二、数据备份的策略1. 定期备份:定期备份是一种基本的备份策略。

根据数据的重要性和变化频率,可以选择每天、每周或每月进行备份。

定期备份可以确保数据的及时性和完整性。

2. 多地备份:将数据备份到不同的地点也是一种常见的备份策略。

这样可以防止单一地点的灾难性情况导致数据的完全丢失。

可以选择云存储、外部硬盘或远程服务器等方式进行多地备份。

3. 增量备份:增量备份是一种高效的备份策略。

它只备份自上次完整备份以来发生变化的数据,可以节省存储空间和备份时间。

增量备份通常与完整备份结合使用,以确保数据的完整性。

三、数据恢复的方法1. 完整恢复:完整恢复是指将备份的数据完全恢复到原始状态。

这种方法适用于硬件故障、恶意软件攻击等导致数据完全丢失的情况。

通过使用备份文件,可以将数据还原到备份时的状态。

2. 部分恢复:部分恢复是指只恢复部分数据或文件。

这种方法适用于误删、错误修改等导致部分数据丢失的情况。

通过选择需要恢复的文件或数据,可以将其恢复到之前的状态。

3. 增量恢复:增量恢复是指将增量备份的数据恢复到原始状态。

数据库备份与恢复的常用方法及注意事项

数据库备份与恢复的常用方法及注意事项数据库是各种应用程序中存储和管理重要数据的关键组成部分。

为了保护数据免受故障、丢失或损坏的影响,定期进行数据库备份是至关重要的。

同时,在发生数据丢失或数据库故障时,能够恢复数据也是一项关键任务。

本文将介绍数据库备份与恢复的常用方法及需要注意的事项,帮助您更好地保护和管理数据库。

一、常用的数据库备份方法1. 完全备份 (Full Backup)完全备份是最基本且常用的备份方法。

它将数据库中的所有数据完整备份到一个文件中,包括表、索引、触发器等。

恢复时,可以直接使用这个完全备份文件来恢复数据库。

2. 增量备份 (Incremental Backup)增量备份是在完全备份的基础上,只备份自上次备份以来发生更改的数据。

这种备份方法可以提供更快速的备份和恢复过程,节省存储空间。

然而,恢复时需要使用完全备份和所有增量备份文件。

3. 差异备份 (Differential Backup)差异备份也是在完全备份的基础上,备份自上次全备以来发生变化的数据。

与增量备份不同的是,差异备份只备份最新一次完全备份后的变化数据,而不是所有增量备份文件。

这样可以节省一部分存储空间,并且恢复过程相对较快。

二、数据库备份的注意事项1. 定期备份为了保护数据的完整性和安全性,建议进行定期备份。

备份频率可以根据业务需求和数据库更新频率来确定。

重要数据的备份最好进行多次,以防发生备份失败或出现备份数据损坏的情况。

2. 存储备份文件备份文件的存储和管理也非常重要。

首先,确保备份文件的存储介质可靠,例如硬盘、磁带、云存储等。

其次,选择合适的存储位置,最好是不同于数据库服务器的地方,以防止服务器和备份文件同时损坏。

此外,远程备份和分布式备份也是值得考虑的选项,以提高数据的可靠性和灾难恢复能力。

3. 监控备份过程在进行备份过程中,监控备份的运行情况非常重要。

可以通过备份软件提供的日志功能来跟踪备份的状态和错误信息。

Java实现SqlServer及MySql的备份与还原(经典版)

Java实现Sqlserver及MySql的备份与还原注:本人是采用Struts1做的一个简单小例子。

实现步骤:1.数据库基类package com.wingo.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/***@ClassName:DataBaseUtil*@Description:TODO*@author莫希柏*@date Jul4,20122:21:41PM*/public class DataBaseUtil {/***@Description:获取数据库连接*@author莫希柏*@date Jul4,20122:23:11PM*/public static Connection getConnection() {Connection conn = null;try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=datatest";String username = "sa";String password = "sa";conn = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}/***@Description:关闭*@author莫希柏*@date Jul4,20122:22:57PM*/public static void closeConn(Connection conn) { if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}2.action类package com.wingo.action;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.sql.CallableStatement;import java.sql.PreparedStatement;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction;import com.wingo.util.DataBaseUtil;public class DataAction extends DispatchAction{ /***@Description:SqlServer备份*@author莫希柏*@date Jul4,20122:45:16PM*/public ActionForward doSqlServerBackUp(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception {String mssqlBackupName=request.getParameter("mssqlBackupName");//自定义备份数据库名String mssqlBackupPath=request.getParameter("mssqlBackupPath");//自定义备份数据库保存路径String dbName="datatest";//被备份的数据库名称boolean flag=false;try {File file = new File(mssqlBackupPath);String path = file.getPath() + "\\"+ mssqlBackupName + ".bak";//备份生成的数据路径及文件名String bakSql = "backup database "+dbName+" to disk=? with init";//备份数据库SQL语句PreparedStatement bak = DataBaseUtil.getConnection().prepareStatement(bakSql);bak.setString(1, path);//path必须是绝对路径bak.execute(); //备份数据库bak.close();flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:SqlServer还原*@author莫希柏*@date Jul4,20124:28:05PM*/public ActionForward doSqlServerRecovery(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){boolean flag = false;String mssqlRecoveryPath =request.getParameter("mssqlRecoveryPath"); //被还原数据库文件的路径String dbname="datatest";//数据库名称try{File file = new File(mssqlRecoveryPath);String path = file.getPath();//数据库文件名String recoverySql = "ALTER DATABASE "+dbname+" SET ONLINE WITHROLLBACK IMMEDIATE";// 断开所有连接 PreparedStatement ps= DataBaseUtil.getConnection().prepareStatement(recoverySql);CallableStatement cs= DataBaseUtil.getConnection().prepareCall("{call killrestore(?,?)}"); //调用存储过程cs.setString(1, dbname); // 数据库名cs.setString(2, path); // 已备份数据库所在路径cs.execute(); // 还原数据库ps.execute(); // 恢复数据库连接flag=true;} catch (Exception e) {flag=false;e.printStackTrace();}response.setCharacterEncoding("utf-8");try {if(flag==true){response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份成功!');document.location.href='DataAction.do?action=toBackIndex';</script>");}else{response.getWriter().print("<script type=\"text/javascript\">alert('SQLSERVER备份失败!');document.location.href='DataAction.do?action=toBackIndex';</script>");}} catch (IOException e) {e.printStackTrace();}return null;}/***@Description:MySql备份*@author莫希柏*@date Jul4,20124:39:02PM*/public ActionForward doMySqlBackUp (ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){boolean flag=false;try {Runtime rt = Runtime.getRuntime();String mySqlBackupName=request.getParameter("mySqlBackupName");//mysql 自定义数据库备份名称String mysqlBackupPath=request.getParameter("mysqlBackupPath");//mysql 自定义数据库备份保存路径String fPath=mysqlBackupPath+mySqlBackupName+".sql";String command="C:/Program Files/MySQL/MySQL Server5.0/bin/mysqldump -uroot -p123456 datatest";//调用 mysql的cmd:Process child = rt.exec(command);// 设置导出编码为utf8。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA实现数据库备份与还原[MYSQL为例]数据库数据的备份与还原最好是使用数据库自带的客户端软件来实现,JAVA可以通过调用mysqldump、mysql客户端软件分别进行mysql数据库的备份还原,当然前提是JAVA服务器必须安装mysql客户端软件,但是也可以通过java telnet登陆数据库服务器实现备份,关于telnet的相关资料请Google.MYSQL支持的备份方式:1.使用SELECT INTO ...OUTFILE,例如SQL代码1SELECT * INTO OUTFILE "D:\\test.sql" fields terminatedby ',' lines terminatedby '' from category ;生成的文件会存放在数据库服务器上面SELECT INTO只备份了数据库表中的数据:如下为category备份后的文件内容XML/HTML代码21,ELECTRONICS,\N32,TELEVISIONS,143,TUBE,254,LCD,265,PLASMA,276,PORTABLE ELECTRONICS,187,MP3 PLAYERS,698,FLASH,7109,CD PLAYERS,61110,2 WAY RADIOS,62.使用BACKUP TABLE,例如SQL代码12BACKUPTABLE test_tableto 'D:\backup';BACKUP只针对MyISAM表格,且在MYSQL 5.1的参考手册中“注释:本语句不理想”; BACKUP语句效果为拷贝数据库表中的.frm文件到数据库服务器目标目录3.使用mysqldump程序或mysqlhotcopy脚本MYSQL 5.1的参考手册中关于mysqldump的说明:“可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。

转储包含创建表和/或装载表的SQL语句。

“JAVA可以运用Process类的exec(String str)方法调用系统命令,所以需要在服务器上安装mysqldump程序已完成备份,可以对远程的数据库服务器进行备份(配置hostname参数),备份语句具体参数参考MYSQL参考手册MYSQL备份命令行:SQL代码13mysqldump -hhostname -uusername -ppassword databasename > ‘backupfile’JAVA代码如下:Java代码14public final String BACKUP_COMMAND ="mysqldump";15public final String ENCODING ="utf8";1617public boolean backup(String file) {18 boolean isSuccess =true;19 try {20 Runtime rt = Runtime.getRuntime();21 String backupStr =this.getBackupStr();22 T(backupStr);23 Process process = rt.exec(backupStr);2425 BufferedReader br =new BufferedReader(newInputStreamReader(process.getInputStream(), ENCODING));2627 String inStr ="";28 StringBuffer sb =new StringBuffer("");29 while ((inStr = br.readLine()) !=null) {30 sb.append(inStr).append("");31 }32 String outStr = sb.toString();3334 OutputStreamWriter writer =new OutputStreamWriter(newFileOutputStream(file), ENCODING);35 writer.write(outStr);36 writer.flush();3738 br.close();39 writer.close();40 }catch (Exception e) {41 e.printStackTrace();42 isSuccess =false;43 }44 return isSuccess;45}4647private String getBackupStr() {48 String backupStr = BACKUP_COMMAND +" -u" + db.getUserName() +" -p" +db.getPassword() +" -h" + db.getHost() +" --set-charset=" + db.getEncoding() +"" + db.getName();49 return backupStr;50}51MYSQL还原命令行:SQL代码52mysql -hhostname -uusername -ppassword databasename < ‘backupfile’JAVA代码如下:Java代码53public final String REVERT_COMMAND ="mysql";5455public boolean revert(String file) {56 try {57 Runtime rt = Runtime.getRuntime();58 String revertStr =this.getRevertStr();59 Process process = rt.exec(revertStr);6061 String inStr;62 StringBuffer sb =new StringBuffer("");63 BufferedReader br =new BufferedReader(new InputStreamReader(64 new FileInputStream(file), ENCODING));65 while ((inStr = br.readLine()) !=null) {66 sb.append(inStr).append("");67 }68 String outStr = sb.toString();6970 OutputStreamWriter writer =newOutputStreamWriter(process.getOutputStream(), ENCODING);71 writer.write(outStr);72 writer.flush();73 br.close();74 writer.close();75 }catch (Exception e) {76 e.printStackTrace();77 return false;78 }79 return true;80}8182private String getRevertStr() {83 String backupStr = REVERT_COMMAND +" -u" + db.getUserName() +" -p" +db.getPassword() +" -h" + db.getHost() +" " + db.getName();84 return backupStr;85}mysqlhotcopy程序,MYSQL 5.1的参考手册的说明:"如果你在服务器上进行备份,并且表均为MyISAM表,它运行在Unix和NetWare中"实现原理和mysqldump一样,这里暂不详细说明附上mysqldump备份后的文件的内容:DROP TABXML/HTML代码86CREATE TABLE `category` (87 `category_id` int(11) NOT NULL auto_increment,88 `name` varchar(20) NOT NULL,89 `parent` int(11) default NULL,90 PRIMARY KEY (`category_id`)91)ENGINE=MyISAM DEFAULTCHARSET=latin1 ROW_FORMAT=REDUNDANT;9293--94-- Dumping data for table `category`95--969798/*!40000 ALTER TABLE `category` DISABLE KEYS */;99LOCK TABLES `category` WRITE;100INSERT INTO `category` VALUES (1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),(4,'LCD',2),(5,'PLAS MA',2),(6,'PORTABLE ELECTRONICS',1),(7,'MP3 PLAYERS',6),(8,'FLASH',7),(9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);101UNLOCK TABLES;102/*!40000 ALTER TABLE `category` ENABLE KEYS */;数据库的备份import java.io.IOException;import javax.swing.JOptionPane;public class JavaOutputOracle {public static void main(String[] args) {Runtime rt = Runtime.getRuntime();Process processexp = null;// 创建一个本机进程String exp = "exp scott/tiger@oracle file=d:/gengen.dmp"; try {processexp = rt.exec(exp);if (processexp.waitFor() != 0) {JOptionPane.showMessageDialog(null, "数据库备份失败"); } else {JOptionPane.showMessageDialog(null, "数据库备份成功"); }} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}数据的恢复:import java.io.IOException;import javax.swing.JOptionPane;public class OracleInput{public static void main(String[] args) {Runtime rt = Runtime.getRuntime();Process processexp = null;String imp = "imp scott/tiger@oracle file=d:/gengen.dmp";try {processexp = rt.exec(imp);if (processexp.waitFor() != 0) {JOptionPane.showMessageDialog(null, "没有备份的数据库信息文件"); }} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}做一个项目中的数据库备份与恢复(MSSQL)数据库备份String webtruepath=getServletContext().getRealPath(request.getServletPath());//取Servlet的真实路径java.io.File file=new java.io.File(webtruepath);file=file.getParentFile();String path=file.getPath()+"\\..\\WEB-INF\\lib\\"+name+".dbbak";//name文件名String bakSQL="backup database school to disk=? with init";//SQL语句java.sql.PreparedStatement bak=DBS.getConnection().prepareStatement(bakSQL);bak.setString(1,path);//path必须是绝对路径if(!bak.execute())over="备份成功";else over="备份失败";bak.close();数据库恢复if(!DBS.close()){over="关闭所有链接失败";}else{String webtruepath=getServletContext().getRealPath(request.getServletPath());java.io.File file=new java.io.File(webtruepath);file=file.getParentFile();String path=file.getPath()+"\\..\\WEB-INF\\lib\\"+name;String reSQL="restore database school from disk=? with replace";Class.forName(DBInf.getDriverClassName());java.sql.Connection con=DriverManager.getConnection(DBInf.getMester());java.sql.PreparedStatement reStmt=con.prepareStatement(reSQL);reStmt.setString(1,path);//path必须是绝对路径if(!reStmt.execute())over="恢复成功";else over="恢复失败";reStmt.close();con.close();}。

相关文档
最新文档