您的位置:首页 > 数据库 > MySQL

MySQL数据库的备份及恢复

2006-01-21 08:45 519 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: