public class DatabaseBackup { /** * * @param dbdir mysql数据库安装路径 * @param dbname 数据库的名称 * @param backdir 备份的目录 */ public static void backup(String dbdir, String dbname, String backdir) { Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmmss"); String currentTime = dateFormat.format(calendar.getTime()); try { long startTime = System.currentTimeMillis(); Runtime rt = Runtime.getRuntime(); Process child = rt .exec(dbdir + "/bin/mysqldump --default-character-set=utf8 -uroot -p123456 " + dbname); InputStream in = child.getInputStream(); InputStreamReader xx = new InputStreamReader(in, "utf8"); FileOutputStream fout = new FileOutputStream(new File(backdir, dbname + "_" + currentTime + ".bak")); OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8"); dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); writer.write("-- Dump by Microsoul at " + dateFormat.format(calendar.getTime()) + "\r\n"); String inStr; BufferedReader br = new BufferedReader(xx); // 这样实时写入文件很重要,网上有很多是将读取的存入字符串中,最后再写成文件,这样会导致Java的堆栈内存溢出。 while ((inStr = br.readLine()) != null) { writer.write(inStr); writer.write("\r\n"); } writer.write("\r\n-- Use " + (System.currentTimeMillis() - startTime) + "ms\r\n"); writer.flush(); in.close(); xx.close(); br.close(); writer.close(); fout.close(); } catch (Exception e) { PrintStream print = null; try { print = new PrintStream(new File(backdir, currentTime + "_backup_err.log")); dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss"); currentTime = dateFormat.format(calendar.getTime()); print.println(currentTime + " backup failed."); e.printStackTrace(print); print.flush(); } catch (IOException e2) { } finally { if (print != null) { print.close(); } } } } }
以上是备份的代码;
public class Test { public static void main(String[] args) { Calendar twentyOne = Calendar.getInstance(); twentyOne.set(Calendar.HOUR_OF_DAY, 23); twentyOne.set(Calendar.MINUTE, 0); twentyOne.set(Calendar.SECOND, 0); new Timer().schedule(new TimerTask() { @Override public void run() { DatabaseBackup.backup("/usr/local/mysql", "test", "/home/xtiger/db/"); } }, twentyOne.getTime(), 24 * 3600 * 1000); } }
以上是调用的代码。通过 Timer定时调用。
相关推荐
总的来说,Java操作MySQL备份是一项实用的技术,它使得开发者可以通过自动化的方式定期备份数据库,保障数据的安全。通过阅读和理解提供的文件,你可以掌握这一技能,为自己的项目提供可靠的数据库备份方案。
如果你的项目中已经使用了Java,那么可以通过Java代码调用mysqldump命令来实现自动化备份。首先,需要引入一个能够执行系统命令的库,如Apache Commons Exec。以下是一个简单的示例: ```java import org.apache....
在实际应用中,定时备份数据库是一件非常重要的工作,下面是关于利用java程序实现数据库自动调用的方法,其实也不一定非要用 java语言了,只要原理会了...话不多说,下面就来演示一下如何自动备份mysql下的abc数据库:
标题中的“自动备份数据库java源码”指的是使用Java编程语言编写的一种程序,它的主要功能是自动化执行数据库的备份任务。数据库备份是数据保护的重要环节,它可以在数据丢失或系统故障时恢复数据,确保业务连续性。...
- **版本控制**:如果使用MySQL的二进制日志进行增量备份,确保数据库配置了`log-bin`选项,并正确配置了`server_id`以避免主从复制冲突。 最后,Java虽然不是专门用于数据库管理的编程语言,但它强大的系统交互...
可以帮助windows环境下的mysql用户实现自动备份功能.分完全备份和增量备份,可立即执行和定期执行.点击'完全备份'和'增量备份'即可开始周期任务.定期完全备份的时间为自任务开始后每隔48小时的凌晨5点,定期增量备份为...
在Java程序中实现MySQL自动备份可以通过调用`mysqldump`命令来完成。具体步骤如下: 1. **创建Runtime对象**:使用`Runtime.getRuntime()`获取运行时环境实例。 2. **执行mysqldump命令**: - 参数解析:通过`-u`...
6. 并发和调度:如果需要定期自动备份,可以将此功能封装到一个服务中,利用Java的定时任务框架如`ScheduledExecutorService`,或者集成更复杂的调度工具如Quartz。 在压缩包的文件名称列表中提到的"java 实现mysql...
Java编写的数据库自动备份源码是一种实用的工具,它能够帮助数据库管理员定期、高效地创建数据库的备份,确保数据的安全性。在IT行业中,数据库管理是至关重要的,因为任何数据丢失都可能导致重大的业务损失。数据库...
本文将详细讲解如何使用Java来实现MySQL数据库的备份与恢复功能,以及相关的关键知识点。 首先,我们需要理解数据库备份的基本原理。备份是为了防止数据丢失,通常包括全量备份和增量备份。全量备份是指复制整个...
总之,使用Java结合Hibernate进行MySQL数据库备份是一种常见的做法,它充分利用了Java的灵活性和Hibernate的便利性,使备份过程更加自动化和可控。开发者可以根据具体需求定制备份策略,实现高效、安全的数据保护。
《MySQL技术大全:开发、优化与运维实战实例源代码》是一本深入探讨MySQL数据库系统的技术书籍,涵盖了开发、性能优化和运维等多个方面的实践内容。这本书的源代码包含了丰富的实例,帮助读者更好地理解和应用书中...
总的来说,使用Java进行MySQL数据库备份是一种灵活且可扩展的方法,尤其适合自动化和集成到现有的系统中。不过,需要注意的是,这种备份方式可能不适合大规模数据库,因为完全依赖Java程序来处理所有数据可能会消耗...
如果是在没有该工具的环境(比如Windows的某些版本),你可能需要寻找其他方式,如使用Java库如`Flyway`或`Liquibase`,它们提供了更直接的数据库备份和迁移功能。 在实际项目中,数据库备份可能会更复杂,包括增量...
在IT行业中,将数据库数据导出到Excel文件是一种常见的需求,尤其在数据分析、报表生成或者数据备份时。本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 ...
schtasks /create /tn "MySQL Backup" /tr "mysqldump -ubackup -p123456 -h 192.168.1.2 backup_test > D:\bak\bakcup.sql" /st 00:00:00 /sd N /ri 1 /du 00:00:10 其中: * schtasks是Windows自带的计划任务...
在Java中,可以使用`Runtime.getRuntime().exec()`方法调用操作系统命令(如mysqldump for MySQL)来完成物理备份。 - **逻辑备份**:通过执行SQL语句导出数据,例如`SELECT INTO OUTFILE`或`mysqldump --no-create...
如果需要定期自动备份,可以将备份逻辑封装到一个方法中,然后利用Java的`java.util.Timer`或`ScheduledExecutorService`实现定时执行。 7. **权限控制**: 考虑到安全性,确保用于备份的Java程序具有足够的MySQL...
《Java银行管理系统+MySQL》是基于JAVA编程语言和MySQL数据库技术构建的一款银行管理软件。该系统涵盖了银行日常操作中的核心功能,如开户、存款、取款、转账、修改密码以及销户等,实现了完整的业务流程。以下是这...
结合提供的标题"java实现数据库容灾备份"和描述"可以集成定时任务去实时备份或者定期备份,欢迎一起讨论",我们将详细介绍如何利用Java编写程序来自动化数据库的备份过程,并讨论相关技术要点。 首先,数据库备份是...