MySQL数据库的备份及恢复完全可以在B/S下实现,其他数据库也是,这是肯定的,但是怎么实现呢?
首先,建两个个bat文件或者cmd文件(bat可在98及NT下执行,cmd只能在NT下执行),
备份:
rem 判断mysql服务是否启动,然后将查询结果输出到server.log文件里
netstat -na | (find "0.0.0.0:3306" & find "LISTENING")>server.log
rem 手工建立一个空的文件temp.log,为了和server.log文件相比较
rem 将server.log与temp.log相比较,如果mysql服务已经启动,那么server.log文件中就会有信息。否则为空
rem 如果mysql服务已经启动,那么就直接用mysqldump进行备份;如果没有启动,也就是server.log文件为空,那么就会先启动数据库,然后再备份
fc server.log temp.log
if ERRORLEVEL = = 0 goto backup
@echo Trying to 启动mysql服务 …………OK
net start mysql5
:backup
@echo mysql服务已经启动,正在备份...
cd ../back
set DBBACK_HOME=%cd%
cd ../service/mysql/bin
mysqldump -uroot -piamtop wcpmis > %DBBACK_HOME%/back_%date:~0,10%.sql
if ERRORLEVEL = = 0 echo 数据库备份完成!
恢复:
rem 判断mysql服务是否启动,然后将查询结果输出到server.log文件里
netstat -na | (find "0.0.0.0:3309" & find "LISTENING")>server.log
rem 手工建立一个空的文件temp.log,为了和server.log文件相比较
rem 将server.log与temp.log相比较,如果mysql服务已经启动,那么server.log文件中就会有信息。否则为空
rem 如果mysql服务已经启动,那么就直接用mysqldump进行备份;如果没有启动,也就是server.log文件为空,那么就会先启动数据库,然后再备份
fc server.log temp.log
if ERRORLEVEL = = 0 goto backup
@echo Trying to 启动mysql服务 …………OK
net start mysql
:backup
@echo mysql服务已经启动,正在恢复...
cd ../back
set DBBACK_HOME=%cd%
cd ../service/mysql/bin
mysql -uroot -piamtop wcpmis < %DBBACK_HOME%/back_%date:~0,10%.sql
if ERRORLEVEL = = 0 echo 数据库恢复完成!
用来进行备份/恢复数据库,然后在程序中:
try {
String path = request.getRealPath("/");
String file = path +"database//dbBackup.cmd";
Process p = Runtime.getRuntime().exec("cmd /k start "+file);
log.error(p.getInputStream());
log.error(p.getErrorStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
即可。
附:MySQL备份/恢复所有数据库
C:/temp/TopSoft/service/mysql/bin>mysqldump -uroot -p1234 --opt --all-database
s > test.sql
C:/temp/TopSoft/service/mysql/bin>mysql -uroot -p1234 <test.sql
C:/temp/TopSoft/service/mysql/bin>