闲言少絮,这个程序利用MySql 数据库自带小程序进行数据库的备份和还原。这两个程序分别是:mysql.exe和mysqldump.exe。这两个程序在您安装Mysql数据库的时候会自动安装到数据库的bin目录。这两个程序存在的目录为:C:\Program File\MySQL\MySQL Server 5.5\bin 这个目录下。在这个目录下您还可以看到很多MySql自带的工具程序,他们都很方便和实用。
数据库安装程序信息:mysql- 5.5.25a-win32.msi。
安装路径:程序默认路径。
应用程序:Navicat_for_Mysql.exe,默认安装。
依赖项:mysql-connector-java-5.1.10-bin.jar
服务器地址:192.168.0.100
核心语句:
备份:"cmd.exe /C C:\\mysqldump -uroot -p123456 -h
192.168.0.100 " + database + " >" + path + "";
还原:"cmd.exe /C
C:\\mysql -uroot -p123456 -h 192.168.0.100 " + database + " <" + path + "";
其他说明:建立的数据库名称为:qqwe,数据库建立在远程服务器上。mysql.exe和mysqldump.exe从bin目录下取出来,放入到
C:\\ 下。
这个程序通过读取*.properties配置文件来获取外界传递进来的信息。这个文件是自己定义的。其中定义的内容如下:
图片连接地址:http://my.iteye.com/admin/picture/120930
OK,简要说明结束,看代码!
package DatabaseRR;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.lang.Process;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.sql.Statement;
public class EasyRecovery
{
Connection conn = null;
public Connection getConnection(String fileNameAndURL)
{
Properties prop = new Properties();
FileInputStream fis;
try{
fis = new FileInputStream(fileNameAndURL);
prop.load(fis);
fis.close();
String userName = prop.getProperty("userName");
String password = prop.getProperty("password");
String localHost = prop.getProperty("localHost");//主机名或主机地址IP,如 192.168.0.100
String database = prop.getProperty("database");//数据库名称
String jdbcDriver = prop.getProperty("jdbcDriver");//加载数据库驱动的名称
String port = prop.getProperty("port"); //端口
String dataBaseCompany = prop.getProperty("dataBaseCompany");
String pathUrl = "jdbc:"+dataBaseCompany+"://"+localHost+":"+port+"/"+database;
Class.forName(jdbcDriver); // 加载MySQL数据库驱动
String url = pathUrl; // 定义与连接数据库的url
String user = userName; // 定义连接数据库的用户名
String passWord = password; // 定义连接数据库的密码
conn = DriverManager.getConnection(url, user, passWord); // 连接连接
}
catch (Exception e)
{
e.printStackTrace();
}
return conn;
}
/**
* 获取MySQL所有数据库方法
SCHEMATA 这是MySql记录数据库中一共建立了多少个数据库,并保存他们表名的一个数据库表
* @param fileNameAndURL
* @return list
*/
public List<String> getDatabase(String fileNameAndURL)
{
List<String> list = new ArrayList<String>(); // 定义List集合对象
Connection con = getConnection(fileNameAndURL); // 获取数据库连接
Statement st; // 定义Statement对象
try
{
st = con.createStatement(); // 实例化Statement对象
ResultSet rs = st.executeQuery("select schema_name from SCHEMATA");// 指定查询所有数据库方法
while (rs.next()) // 循环遍历查询结果集
{
list.add(rs.getString(1)); // 将查询数据添加到List集合中
}
}
catch (Exception e)
{
e.printStackTrace();
}
return list; // 返回查询结果
}
/**
* 备份数据库
*
* @param fileNameAndURL 配置文件和他的路径
*
* @param database 数据库名
* @param path 文件保存路径
* @param userName 创建数据库时设定的用户名
* @param password 数据库用户密码
* @param localHost 主机名或主机地址IP,如 192.168.0.100
* @param CmdDisk mysql.exe、mysqldump.exe这两个文件存放的目录
*/
private void mysqldump(String fileNameAndURL)
{
Connection con = getConnection(fileNameAndURL);
Properties prop = new Properties();
try {
FileInputStream fis = new FileInputStream(fileNameAndURL);
prop.load(fis);
fis.close();
String userName = prop.getProperty("userName");
String password = prop.getProperty("password");
String localHost = prop.getProperty("localHost");//主机名或主机地址IP,如 192.168.0.100
String database = prop.getProperty("database");//数据库名称
String saveDisk = prop.getProperty("saveDisk");//要保存的盘符
String fileName = prop.getProperty("fileName");//要保存成的文件名称
String fileType = prop.getProperty("fileType");//要保存成的文件格式
String CmdDisk = prop.getProperty("CmdDisk"); //
String path = saveDisk + fileName + fileType;//构成了完整路径
String Cmd = "cmd.exe /C " + CmdDisk + "mysqldump --hex-blob -u" + userName + " -p" + password + " -h " + localHost + " " + database + " >" + path + "";
//String asd = "cmd.exe /C C:\\mysqldump -uroot -p123456 -h 192.168.0.100 " + database + " >" + path + ""; 原始格式,不要删除该语句
Process p = Runtime.getRuntime().exec(Cmd); //定义进行数据备份的语句
StringBuffer out1 = new StringBuffer(); //定义字符串缓冲对象
byte[] b = new byte[1024]; //定义字节数组
for (int i; ((i = p.getInputStream().read(b)) != -1);) // 将数据写入到指定文件中 mysqldump.exe
{
out1.append(new String(b, 0, i)); //向流中追加数据
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
/**
* 恢复数据库
*
* @param fileNameAndURL 配置文件和他的路径
*
* @param database 数据库名
* @param path 文件保存路径
* @param userName 创建数据库时设定的用户名
* @param password 数据库用户密码
* @param localHost 主机名或主机地址IP,如 192.168.0.100
* @param CmdDisk mysql.exe、mysqldump.exe这两个文件存放的目录
*/
private void mysqlresume(String fileNameAndURL)
{
Connection con = getConnection(fileNameAndURL);
Properties prop = new Properties();
try
{
FileInputStream fis = new FileInputStream(fileNameAndURL);
prop.load(fis);
fis.close();
String userName = prop.getProperty("userName");
String password = prop.getProperty("password");
String localHost = prop.getProperty("localHost"); //主机名或主机地址IP,如 192.168.0.100
String database = prop.getProperty("database"); //数据库名称
String saveDisk = prop.getProperty("saveDisk"); //要保存的盘符
String fileName = prop.getProperty("fileName"); //要保存成的文件名称
String fileType = prop.getProperty("fileType"); //要保存成的文件格式
String CmdDisk = prop.getProperty("CmdDisk"); //mysql.exe、mysqldump.exe这两个文件存放的目录
String path = saveDisk + fileName + fileType; //构成了完整路径
String Cmd = "cmd.exe /C " + CmdDisk + "mysql -u" + userName + " -p" + password + " -h " + localHost + " " + database + " <" + path + "";
Process p = Runtime.getRuntime().exec(Cmd);
StringBuffer out1 = new StringBuffer(); // 定义字符串缓冲对象
byte[] b = new byte[1024]; // 定义字节数组
for (int i; ((i = p.getInputStream().read(b)) != -1);) // 将数据写入到指定文件中
{
out1.append(new String(b, 0, i)); // 向流中追加数据
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
/**
* 编辑属性文件,向配置文件中写入新的信息
* @param fileNameAndURL
* @param Key
* @param Value
*/
public void propertyEditor(String fileNameAndURL , String Key , String Value)
{
Properties prop = new Properties();
try
{
InputStream fis = new FileInputStream(fileNameAndURL);
prop.load(fis);
prop.setProperty(Key, Value);
OutputStream fos = new FileOutputStream(fileNameAndURL);
prop.store(fos , Key);
fos.flush();
fis.close();
}
catch(IOException e)
{
e.getStackTrace();
}
}
//################################################//
/**
* 备份 可供外界调用的方法
* @param fileNameAndURL
*/
public void dataBaseReserve(String fileNameAndURL)
{
EasyRecovery mc = new EasyRecovery();
mc.mysqldump(fileNameAndURL);
}
/**
* 恢复 可供外界调用的方法
* @param fileNameAndURL
*/
public void dataBaseRecovery(String fileNameAndURL)
{
EasyRecovery mc = new EasyRecovery();
mc.mysqlresume(fileNameAndURL);
}
public static void main(String args[])
{
EasyRecovery mc = new EasyRecovery();
String fileNameAndURL = "E:\\propertiesConfig\\EasyRecoveryConfig.properties";
mc.dataBaseReserve(fileNameAndURL);
mc.propertyEditor(fileNameAndURL, "userName", "Doctor Lee");
mc.dataBaseRecovery(fileNameAndURL);
}
}
--hex-blob;这个命令是用于将导出的内容处理成为2进制流的形式。因为有些时候你会发现,导出的数据库文件大小与数据库本身真实内容的大小存在冲突,往往是小于真实的大小。加入这个命令你就可以解决这个问题了。这个命令加在备份数据库的时候。
这个程序适用于任何Mis系统、ERP系统等,在您的界面中只需要添加两个按钮然后完成相应的事件即可。这个程序也可以将他改成一个Action(EasyRecoveryAction.java),帮助您完成相应的后台请求。初学者,不足之处请您多多指点。相应的项目工程和依赖程序在下面,您可以拿来直接运行。希望对您有所帮助。开源万岁!转载请您注明出处。
分享到:
相关推荐
本文将深入探讨“数据库的完整备份与恢复”以及如何使用`--hex-blob`选项来确保数据的准确无误。 首先,让我们理解什么是数据库的完整备份。完整备份是指在特定时间点完全复制整个数据库,包括所有表、索引、触发器...
### MySQL数据库备份与恢复:深度解析与实践指南 在当今数据驱动的世界中,数据库的稳定性和数据的安全性显得尤为重要。MySQL作为全球最流行的开源关系型数据库管理系统之一,其备份和恢复策略是确保数据安全和系统...
mysqldump是MySQL数据库管理系统提供的一款强大的数据备份和恢复工具,它能够方便地将数据库的数据和结构导出为SQL格式的文本文件,以便于备份、迁移或恢复数据。在本文中,我们将深入探讨mysqldump的使用方法和常用...
好的备份和恢复机制可以帮助数据库管理员快速恢复数据库,以减少数据丢失和业务中断的风险。本文将讲解 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb。 MySQL 的备份...
MySQL的备份和恢复是数据库管理的关键环节,确保数据的安全性和可恢复性。本文主要探讨了在MySQL 5.0.22版本下针对MyISAM和InnoDB两种表类型的备份策略,以及各种备份工具和方法。 首先,MySQL支持多种备份工具,如...
- `--hex-blob`: 将BLOB字段转换为十六进制表示。 - `--flush-logs`: 在备份前刷新日志文件。 - `--delete-master-logs`: 删除主服务器上的日志文件。 - `-B $DATABASE`: 指定要备份的数据库名称。 ##### 2.3 主要...
MySQL备份与恢复是数据库管理中至关重要的环节,确保数据安全性和业务连续性。MySQL提供了多种备份策略,包括完全备份、增量备份和热备份。本文主要围绕MySQL的备份工具`mysqldump`和`mysqlhotcopy`,以及二进制日志...
`mysqldump` 是MySQL提供的一种强大的备份工具,能够将数据库导出为SQL脚本文件,便于后续的恢复操作。以下是一些重要的选项及其用法: #### 基本使用 - `mysqldump [选项] 数据库名 > 输出文件名.sql` - 这是最...
MySQL数据库的备份与恢复是数据库管理中的重要环节,确保数据安全和业务连续性。本文将深入探讨MySQL的各种备份策略和恢复方法,特别是针对MyISAM和InnoDB这两种主要的存储引擎。 首先,MySQL提供了多种备份工具,...
在UNIX环境下,MySQL数据库的备份和恢复是数据库管理员必须掌握的关键技能。MySQL提供了多种备份工具和策略,以确保数据的安全性和可恢复性。本文将详细探讨这些方法,重点关注MyISAM和InnoDB这两种最常见的表类型。...
除了手动运行脚本,通常会将其配置到`crontab`中,定时自动执行,以确保每天都有最新的数据库备份。例如,`50 * * * * /home/cacti/backup/backupmysql.sh > /dev/null 2>&1`这条`crontab`条目将在每天的50分钟执行...
在数据库管理与维护过程中,数据备份是一项至关重要的工作,它能够帮助我们在系统出现故障或数据丢失时迅速恢复业务。MySQL作为一款广泛使用的开源关系型数据库管理系统,在数据备份方面提供了非常丰富的工具和支持...
通过上述参数的合理运用,`mysqldump`能够帮助用户有效地完成数据库备份与恢复任务。在实际应用中,根据具体需求选择合适的参数组合是非常关键的,这不仅能提高备份与恢复的效率,还能保证数据的一致性和完整性。
MySQL数据库的备份与恢复是数据库管理中的重要环节,确保数据安全和系统稳定。本文将详细介绍MySQL的备份和还原命令,以及`mysqldump`工具的常见参数。 首先,我们来看如何备份数据库。`mysqldump`是MySQL提供的一...
### MySQL 数据库备份方法详解及注意事项 #### 一、引言 在数据库管理中,备份是非常重要的环节之一,尤其对于MySQL这种广泛使用的数据库系统来说更是如此。合理的备份策略不仅可以保护数据安全,还能在数据丢失、...
在数据库管理与维护的过程中,备份与恢复是极其重要的环节。`mysqldump`作为MySQL提供的一款强大的工具,被广泛应用于数据的导入导出、备份及还原等场景。本文将深入探讨`mysqldump`的各项功能,并通过具体的参数...