这篇文章将为大家详细讲解有关Java中怎么备份和还原MySQL数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

备份

上面的网页提到mysqldump命令一共有三种形式,如下:

shell>mysqldump[options]db_name[tbl_name...]shell>mysqldump[options]--databasesdb_name...shell>mysqldump[options]--all-databases

该命令有很多的options,详情可以查看上面的链接,我这里只需要备份一个数据库,命令也比较简单;如果在命令行窗口可以使用如下命令来实现备份:

mysqldump-umysql-pmysql--add-drop-database--skip-lock-tables-Btjfinal>d:/backup.sql

如果不加--add-drop-database参数并且用户不是root用户,有可能报下面的错误:

mysqldump:Goterror:1044:"Accessdeniedforuser'mysql'@'localhost'todatabase'tjfinal'"whenusingLOCKTABLES

Java示例代码:

/***备份数据库*@throwsException*/publicstaticvoidbackup()throwsException{StringsavePath=BACKUP_DIR+"backup-"+DateTimeTool.getDateByTime()+".sql";String[]execCMD=newString[]{"mysqldump","-u"+DB_USER,"-p"+DB_PWD,DB_NAME,"-r"+savePath,"--skip-lock-tables"};Processprocess=Runtime.getRuntime().exec(execCMD);intprocessComplete=process.waitFor();if(processComplete==0){System.out.println("备份成功.");}else{thrownewRuntimeException("备份数据库失败.");}}还原

还原数据库需要用到MySQL的source命令,该命令用来读取一个文件并执行其中的SQL语句;如果使用命令行工具,可以登录MySQL客户端,然后直接执行source命令即可:

MariaDB[tjfinal]>sourcefile_name--或者MariaDB[tjfinal]>\.file_name

当然如果不登录进客户端也是可以的,这时就需要用到mysql客户端命令的 --execute(或者-e)选项(option),如下:

--execute=statement--或者-estatement

其中--execute(或-e)选项表示要登录客户端然后执行SQL命令后退出,而该选项的参数 statement 就是要执行的SQL命令,关于mysql命令选项的说明可以参考这里:http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option_mysql_execute

因此在不登录MySQL客户端的情况下可以使用下面的命令还原数据库:

mysql-umysql-pmysql-esourced:/backup.sql--或者mysql-umysql-pmysql--execute="sourced:/backup.sql"

Java示例代码:

/***还原数据库*@paramsql要还的SQL文件*@throwsException*/publicstaticvoidrestore(Stringsql)throwsException{StringtargetFile=BACKUP_DIR+sql;//SQL文件路径String[]execCMD=newString[]{"mysql",DB_NAME,"-u"+DB_USER,"-p"+DB_PWD,"-esource",targetFile};Processprocess=Runtime.getRuntime().exec(execCMD);intprocessComplete=process.waitFor();if(processComplete==0){System.out.println("还原成功.");}else{thrownewRuntimeException("还原数据库失败.");}

关于Java中怎么备份和还原MySQL数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。