Java实现MySQL数据库备份(一)

Java实现MySQL数据库备份(一)Java实现MySQL数据库备份(一)

大家好,又见面了,我是你们的朋友全栈君。

        下班了,利用闲暇时间总结一下如何使用Java语言实现MySQL数据库备份:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

/**
 * MySQL数据库备份
 * 
 * @author GaoHuanjie
 */
public class MySQLDatabaseBackup {

	/**
	 * Java代码实现MySQL数据库导出
	 * 
	 * @author GaoHuanjie
	 * @param hostIP MySQL数据库所在服务器地址IP
	 * @param userName 进入数据库所需要的用户名
	 * @param password 进入数据库所需要的密码
	 * @param savePath 数据库导出文件保存路径
	 * @param fileName 数据库导出文件文件名
	 * @param databaseName 要导出的数据库名
	 * @return 返回true表示导出成功,否则返回false。
	 */
	public static boolean exportDatabaseTool(String hostIP, String userName, String password, String savePath, String fileName, String databaseName) throws InterruptedException {
		File saveFile = new File(savePath);
		if (!saveFile.exists()) {// 如果目录不存在
			saveFile.mkdirs();// 创建文件夹
		}
		if(!savePath.endsWith(File.separator)){
			savePath = savePath + File.separator;
		}
		
		PrintWriter printWriter = null;
		BufferedReader bufferedReader = null;
		try {
			printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + fileName), "utf8"));
			Process process = Runtime.getRuntime().exec(" mysqldump -h" + hostIP + " -u" + userName + " -p" + password + " --set-charset=UTF8 " + databaseName);
			InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), "utf8");
			bufferedReader = new BufferedReader(inputStreamReader);
            String line;
            while((line = bufferedReader.readLine())!= null){
            	printWriter.println(line);
            }
            printWriter.flush();
			if(process.waitFor() == 0){//0 表示线程正常终止。
				return true;
			}
		}catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (bufferedReader != null) {
					bufferedReader.close();
				}
				if (printWriter != null) {
					printWriter.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return false;
	}
	
	public static void main(String[] args){
		try {
			if (exportDatabaseTool("172.16.0.127", "root", "123456", "D:/backupDatabase", "2014-10-14.sql", "test")) {
				System.out.println("数据库成功备份!!!");
			} else {
				System.out.println("数据库备份失败!!!");
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133574.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 高手解决DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER

    高手解决DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER1、首先要先确定你加电启动的时候有没有认出你的硬盘。这点在bios里可查。如果开机「滴」的一声短声,证明开机自检没问题(排除硬件问题,但不包括硬盘没有识别)。此时按del键进入bios,看你的硬盘有没

    2022年7月4日
    24
  • mybatis插件原理_idea插件库

    mybatis插件原理_idea插件库Mybatis插件插件简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以MyBatis为例,我们可基于MyBatis插件机制实现分页、分表,监控等功能。由于插件和业务无关,业务也无法感知插件的存在。因此可以无感植入插件,在无形中增强功能Mybatis插件介绍Mybatis作为一个应用广泛的优秀的ORM开源框架,这个框架具有强大的灵活性,在四大组件(Executo

    2022年10月7日
    2
  • 俞敏洪老师在新东方20期新教师培训会议上的讲话

    俞敏洪老师在新东方20期新教师培训会议上的讲话亲爱的各位老师,    大家晚上好!  每次见到新东方教师我都特别开心,不仅仅是因为你们是新东方的教师,而是因为你们是比我更加年轻的一代。如果说中国的未来在哪里,就在你们身上;如果说新东方的未来在哪里,也在你们身上;也许未来的总裁或者董事长也在你们中间,所以我要对你们在座的每一位表示足够的尊重。  在座的各位都是比较年轻的教师,大部分人可能是第一次来北京,因为都是新老师。如

    2025年11月4日
    2
  • YII2安装中遇到的错误解决Calling unknown method: yii\web\UrlManager::addRules()

    YII2安装中遇到的错误解决Calling unknown method: yii\web\UrlManager::addRules()

    2022年2月3日
    39
  • smalldatetime mysql_SQLSERVER中datetime和smalldatetime类型分析说明「建议收藏」

    smalldatetime mysql_SQLSERVER中datetime和smalldatetime类型分析说明「建议收藏」datetime和smalldatetime代表日期和一天内的时间的日期和时间数据类型。MicrosoftSQLServer用两个4字节的整数内部存储datetime数据类型的值。第一个4字节存储basedate(即1900年1月1日)之前或之后的天数。基础日期是系统参考日期。不允许早于1753年1月1日的datetime值。第一个4字节:…

    2022年5月12日
    40
  • DropDownList1

    DropDownList1循环绑定数据到DropDownList1foreach(SPListlsinweb.Lists){LIColl.Add(ls.Title);//将数据保存list中}dwlist.DataSource=LIColl;//绑定…

    2022年7月18日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号