MySQL数据库的备份及恢复

时间:2021-12-23 03:17:24

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>