zoukankan      html  css  js  c++  java
  • JAVAWEB实现数据库备份功能

     一.整体思路
    这次公司的网管系统需要做一个数据库备份的功能,由于使用的MySql数据库,而且系统是windows(目前也就会windows),所以可以选择的方法就比较有限了。
    一开始我尝试使用mysql的select命令来导出数据表,后来发现行不通,select column from tablename outfile 的方法一次只能导出单一表格,而且有数据库权限问题。
    最后决定选择使用mysqldump命令的方法,用java的运行时类Java.lang.Runtime来使用后台窗口。


    二.数据备份

    1.备份数据库

    命令行
    ———————————————————————————————————
    mysqldump -h数据库服务器IP -P数据库使用端口号 -u账户 -p密码 数据库名>保存路径
    ———————————————————————————————————

    使用root用户备份数据库fnmsdb5,数据库端口为3306,数据库位于本机(IP:127.0.0.1)

    在命令窗口运行mysqldump命令


    执行后D盘的MysqlBackup路径下就有了一个名字为20160426.sql的备份文件


    备份文件

    mysqldump命令需要在mysql的bin目录下执行,这里我配置了msyql的环境变量,可以在命令窗口的默认目录下执行mysqldump命令。

    在环境变量的path栏里面添加mysql下面的bin文件夹路径即可,比如我是D:MYSQLin.


    mysql环境变量

    2.JAVA代码实现

    JAVA代码部分参考了@不动声色的蜗牛的文章,可以前往http://blog.csdn.net/gaohuanjie/article/details/37512341查看。

    主要用到了JAVA的RunTime类和Process类来实现命令窗口的操作,需要注意的是-p、-h、-u、-p(密码)和后面的值之间不要加入空格,不然会出现不可预知的错误。

    Process process = Runtime.getRuntime().exec(" mysqldump -h" + hostIP +
    " -p"+port+" -u" + userName + " -p" + password + " --set-charset=UTF8 " + databaseName);
    InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");


    总的来说功能不算复杂,主要是mysqldump的相关配置和使用要熟悉,实现起来并不困难。附上一张丑丑的实现图,本人程序员小白一枚,欢迎大大们来给点指导。

    实现图

  • 相关阅读:
    【More Effective C++】Item 4
    【More Effective C++】Item 3
    【More Effective C++】Item 2
    【More Effective C++】Item 1
    ”win7笔记本共享无线网络,手机连接成功却无法上网“的解决之道【亲身经历】
    【RFID防碰撞协议/算法】动态二进制搜索算法
    【RFID防碰撞协议/算法】二进制搜索防碰撞算法
    总结ASP标准控件
    总结ASP控件属性
    ..........
  • 原文地址:https://www.cnblogs.com/Simon-cat/p/9993419.html
Copyright © 2011-2022 走看看