JAVA实现数据库备份

JAVA实现数据库备份

package com.platform.controller;

import com.platform.utils.R;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;

/**
 * Controller
 *
 * @author lwq
 * @email 956743167@qq.com
 * @date 2019-12-23 09:37:35
 */
@RestController
@RequestMapping("dbBackup")
public class DbBackupController {
	private static String separator = "/";
  
    /**
     * 备份数据库
     */
    @RequestMapping("/db")
    public R list(HttpServletRequest request) {
    	try {
    		String realPath = request.getServletContext().getRealPath("/");
        	String path = realPath + "/dbBackUp/" + separator;
        	String sqlFileName = getRunTimeName();
			dbBackUp("Mysql的用户名", "Mysql的密码", "要备份的数据库名", "要保存的路径", '备份的数据名,此处用时间戳取名了');
		} catch (Exception e) {
			e.printStackTrace();
			return R.error("备份数据失败");
		}
        return R.ok();
    }    
    /**
     * 
     * @param root 用户名
     * @param pwd 密码
     * @param dbName 数据库名
     * @param backPath 保存路径
     * @param backName 保存名称
     * @throws Exception
     */
    public static void dbBackUp(String root,String pwd,String dbName,String backPath,String backName) throws Exception {
        String pathSql = backPath+backName;
        File fileSql = new File(pathSql);
        File file = new File(backPath);
        //创建备份sql文件
        file.mkdirs();
        if (!fileSql.exists()){
            fileSql.createNewFile();
        }
        //mysqldump -hlocalhost -uroot -p123456 db > /home/back.sql
        StringBuffer sb = new StringBuffer();
        sb.append("mysqldump");
        sb.append(" -h 127.0.0.1");//此处ip可以是别的机器的ip
        sb.append(" -u"+root);
        sb.append(" -p"+pwd);
        sb.append(" "+dbName+" >");
        sb.append(pathSql);
        System.out.println("cmd命令为:"+sb.toString());
        Runtime runtime = Runtime.getRuntime();
        System.out.println("开始备份:"+dbName);
        System.out.println("cmd /c"+sb.toString());
        Process process = runtime.exec("cmd /c"+sb.toString());
        System.out.println("备份成功!");
    } 
    public static String getRunTimeName() {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
        String newDate=sdf.format(new Date());
        String result="";
        Random random=new Random();
        for(int i=0;i<3;i++){
            result+=random.nextInt(10);
        }
        return newDate+result+".sql";
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ellis_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值