java备份和恢复MySQL数据实例
2012-05-08 10:59
645 查看
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* 数据库操作类
* 用于备份和恢复数据
* 2012-05-08
* 吴辉
*/
public class MySqlDB {
/**
* 备份数据
* @param DBName:备份的数据库名
* @param accName:访问的用户名
* @param password:用户密码
* @param backupFilePath:备份的文件全路径
* @param sqlBinAddress:mysqlBin路径
* @throws IOException
*/
public static void backupDb(String DBName, String accName, String password, String backupFilePath, String sqlBinAddress) throws IOException {
String command = sqlBinAddress + "mysqldump -u" + accName + " -p" + password + " " + DBName;
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
FileOutputStream fout = null;
try {
Runtime rt = Runtime.getRuntime();
Process child = rt.exec(command);
in = child.getInputStream();// 控制台的输出信息作为输入流
isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
// 组合控制台输出信息字符串
br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder("");
while ((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
//写文件
fout = new FileOutputStream(backupFilePath);
writer = new OutputStreamWriter(fout, "utf8");
writer.write(sb.toString());
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(MySqlDB.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MySqlDB.class.getName()).log(Level.SEVERE, null, ex);
} finally {
MySqlDB.closeStream(in, isr, br, writer, fout);
}
}
/**
* 恢复数据
* @param DBName:数据库名
* @param accName:用户名
* @param passwor:密码
* @param revertFilePath:文件全路径
* @param sqlBinAddress :mysqlBin路径
*/
public static void revertDB(String DBName, String accName, String password, String revertFilePath, String sqlBinAddress) throws IOException {
String command = sqlBinAddress + "mysql -u" + accName + " -p" + password + " " + DBName;
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
FileOutputStream fout = null;
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec(command);
OutputStream out = process.getOutputStream();
StringBuilder sb = new StringBuilder("");
br = new BufferedReader(new FileReader(new File(revertFilePath)));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
writer = new OutputStreamWriter(out, "utf8");
writer.write(sb.toString());
writer.flush();
out.close();
br.close();
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
MySqlDB.closeStream(in, isr, br, writer, fout);
}
}
/**
* 关闭流
* @param in
* @param isr
* @param br
* @param writer
* @param font
*/
public static void closeStream(InputStream in, InputStreamReader isr, BufferedReader br, OutputStreamWriter writer, FileOutputStream fout) throws IOException {
if (in != null) {
in.close();
}
if (isr != null) {
isr.close();
}
if (br != null) {
br.close();
}
if (writer != null) {
writer.close();
}
if (fout != null) {
fout.close();
}
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* 数据库操作类
* 用于备份和恢复数据
* 2012-05-08
* 吴辉
*/
public class MySqlDB {
/**
* 备份数据
* @param DBName:备份的数据库名
* @param accName:访问的用户名
* @param password:用户密码
* @param backupFilePath:备份的文件全路径
* @param sqlBinAddress:mysqlBin路径
* @throws IOException
*/
public static void backupDb(String DBName, String accName, String password, String backupFilePath, String sqlBinAddress) throws IOException {
String command = sqlBinAddress + "mysqldump -u" + accName + " -p" + password + " " + DBName;
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
FileOutputStream fout = null;
try {
Runtime rt = Runtime.getRuntime();
Process child = rt.exec(command);
in = child.getInputStream();// 控制台的输出信息作为输入流
isr = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
// 组合控制台输出信息字符串
br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder("");
while ((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
//写文件
fout = new FileOutputStream(backupFilePath);
writer = new OutputStreamWriter(fout, "utf8");
writer.write(sb.toString());
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(MySqlDB.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MySqlDB.class.getName()).log(Level.SEVERE, null, ex);
} finally {
MySqlDB.closeStream(in, isr, br, writer, fout);
}
}
/**
* 恢复数据
* @param DBName:数据库名
* @param accName:用户名
* @param passwor:密码
* @param revertFilePath:文件全路径
* @param sqlBinAddress :mysqlBin路径
*/
public static void revertDB(String DBName, String accName, String password, String revertFilePath, String sqlBinAddress) throws IOException {
String command = sqlBinAddress + "mysql -u" + accName + " -p" + password + " " + DBName;
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
OutputStreamWriter writer = null;
FileOutputStream fout = null;
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec(command);
OutputStream out = process.getOutputStream();
StringBuilder sb = new StringBuilder("");
br = new BufferedReader(new FileReader(new File(revertFilePath)));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
writer = new OutputStreamWriter(out, "utf8");
writer.write(sb.toString());
writer.flush();
out.close();
br.close();
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
MySqlDB.closeStream(in, isr, br, writer, fout);
}
}
/**
* 关闭流
* @param in
* @param isr
* @param br
* @param writer
* @param font
*/
public static void closeStream(InputStream in, InputStreamReader isr, BufferedReader br, OutputStreamWriter writer, FileOutputStream fout) throws IOException {
if (in != null) {
in.close();
}
if (isr != null) {
isr.close();
}
if (br != null) {
br.close();
}
if (writer != null) {
writer.close();
}
if (fout != null) {
fout.close();
}
}
}
相关文章推荐
- 使用mysql备份工具innobackupex将本地数据直接备份到远端服务器、备份、恢复操作实例
- 使用mysql备份工具innobackupex将本地数据 直接恢复 到远端服务器数据目录操作实例
- 使用mysql备份工具innobackupex进行本地数据备份、恢复操作实例
- java操作mysql进行数据备份及恢复操作
- java代码实现mysql数据备份与恢复
- linux下mysql数据备份 恢复
- MySQL完全备份、增量备份与恢复实例
- mysql学习(4)-mysqldump备份和恢复数据
- MySQL 存储过程和函数以及数据恢复和备份
- mysqldump备份与还原mysql数据的实例
- Mysql 通过全量备份和binlog恢复整体数据
- mysql 数据的备份和恢复
- java代码--mysql数据的备份和还原
- Mysql DBA 高级运维学习笔记-Mysql增量备份及分库分表备份数据恢复实战
- mysql的数据备份和恢复
- mysql之数据备份与恢复
- MySQL学习笔记十二:数据备份与恢复
- java实现数据备份和恢复
- innobackupex 完整备份,增量备份,恢复 mysql 数据库
- 【JavaWeb】Mysql source 恢复数据出错解决