请问一下牛人Java数据库项目中实现的数据库备份和恢复都是怎么做的,最好给个源码
在网上找了些,能备份,但都是调用exe(mysql用mysqldump)文件,但有些项目,服务器方根本不可能让我知道他的数据库安装路径,一般只有一个数据库连接地址
哪怎么取数据库的安装路径呢。怎么把数据库的bin找到呢。java里能把数据库的安装下的bin找出来吗
在网上找了些,能备份,但都是调用exe(mysql用mysqldump)文件,但有些项目,服务器方根本不可能让我知道他的数据库安装路径,一般只有一个数据库连接地址
哪怎么取数据库的安装路径呢。怎么把数据库的bin找到呢。java里能把数据库的安装下的bin找出来吗
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;import com.flexoa.web.util.Format;public class BackupDatabases { public static void backup(String sqlPath, String userName, String password,
String dataName) {
try {
Runtime rt = Runtime.getRuntime(); // 调用MySql的 CMD:
Process child = rt.exec(sqlPath + "mysqldump.exe" + " -u"
+ userName + " -p" + password + " -t " + dataName);
// 设置导出编码为utf8。这里必须是utf8 // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流 InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码 String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString(); // 要用来做导入用的sql目标文件:
String pk = "d:/" + dataName
+ Format.getDateFormatStr("yyMMddHHss") + ".sql";
FileOutputStream fout = new FileOutputStream(pk);
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush(); // 别忘记关闭输入输出流
in.close();
xx.close();
br.close();
writer.close();
fout.close();
System.out.print("Backup -:" + dataName+ " > " + pk);
System.err.println(" Success !"); } catch (Exception e) {
e.printStackTrace();
System.out.print("Backup -:" + dataName+ " > ");
System.err.println(" Fail !");
} } public static void main(String[] args) {
String sqlPat = "D:/Java/MySQL 5.1/bin/";
String userName = "root";
String password = "068748";
String dataName = "bbscs8";
backup(sqlPat, userName, password, dataName);
}}
JAVA能取到这个路径吗。根据数据库的连接地址
SET BACKUPDIR=d:\BACKUP
CD /D %BACKUPDIR%SET D=%DATE:~0,10%echo %D%
SET LOG=%BACKUPDIR%\backup.log
SET USER=***
SET PASS=***
SET RAREXE=%BACKUPDIR%\rar.exe
SET RARFILE=%USER%-%D%.rar
SET DMPFILE=%USER%-%D%.dmp
SET LOGFILE=%USER%-%D%.log
SET BACKUPHOST=***
SET BACKUPHOSTSHARE=e$
SET BACKUPHOSTPATH=backup
SET BACKUPUSERNAME=***
SET BACKUPPASSWORD=***MD %D%
CD %D%
echo ---------------------------------------------------------------------------------->%LOG%
echo [%DATE% %TIME%] backup start ......................... >> %LOG%echo [%DATE% %TIME%] backup %USER% >> %LOG%
exp %USER%/%PASS% file=%DMPFILE% log=%LOGFILE% BUFFER=10485760 >> %LOG%
type %LOGFILE% >> %LOG% echo %DATE% %TIME% start rar >>%LOG%
%RAREXE% a -idp %RARFILE% %DMPFILE% %LOGFILE% >>%LOG%
DEL %DMPFILE% %LOGFILE%
echo %DATE% %TIME% end rar >>%LOG%echo %DATE% %TIME% start connect backup host >>%LOG%
net use \\%BACKUPHOST%\%BACKUPHOSTSHARE% %BACKUPUSERNAME% /USER:ACCOUNT\%BACKUPPASSWORD% >>%LOG%
echo %DATE% %TIME% mkdir >>%LOG%
MKDIR \\%BACKUPHOST%\%BACKUPHOSTSHARE%\%BACKUPHOSTPATH%\%D% >>%LOG%
echo %DATE% %TIME% copy file to backup host >>%LOG%
xcopy /Y %RARFILE% \\%BACKUPHOST%\%BACKUPHOSTSHARE%\%BACKUPHOSTPATH%\%D%\ >>%LOG%echo [%DATE% %TIME%] backup end .......................>> %LOG%
cd e:\backupSET D=
SET LOG=
SET BACKUPDIR=
SET USER=
SET PASS=
SET RAREXE=
SET RARFILE=
SET DMPFILE=
SET LOGFILE=
SET BACKUPHOST=
SET BACKUPHOSTSHARE=
SET BACKUPHOSTPATH=REM exit 0