`
openxtiger
  • 浏览: 151728 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java版本的mysql每天23:00自动备份

 
阅读更多
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操作MySQL备份是一项实用的技术,它使得开发者可以通过自动化的方式定期备份数据库,保障数据的安全。通过阅读和理解提供的文件,你可以掌握这一技能,为自己的项目提供可靠的数据库备份方案。

    mysqldump java远程备份mysql数据库 cmd备份

    如果你的项目中已经使用了Java,那么可以通过Java代码调用mysqldump命令来实现自动化备份。首先,需要引入一个能够执行系统命令的库,如Apache Commons Exec。以下是一个简单的示例: ```java import org.apache....

    使用java自动备份mysql数据库

    在实际应用中,定时备份数据库是一件非常重要的工作,下面是关于利用java程序实现数据库自动调用的方法,其实也不一定非要用 java语言了,只要原理会了...话不多说,下面就来演示一下如何自动备份mysql下的abc数据库:

    自动备份数据库java源码

    标题中的“自动备份数据库java源码”指的是使用Java编程语言编写的一种程序,它的主要功能是自动化执行数据库的备份任务。数据库备份是数据保护的重要环节,它可以在数据丢失或系统故障时恢复数据,确保业务连续性。...

    mysql(完整、增量)备份与还原

    - **版本控制**:如果使用MySQL的二进制日志进行增量备份,确保数据库配置了`log-bin`选项,并正确配置了`server_id`以避免主从复制冲突。 最后,Java虽然不是专门用于数据库管理的编程语言,但它强大的系统交互...

    mysql定时备份器java版

    可以帮助windows环境下的mysql用户实现自动备份功能.分完全备份和增量备份,可立即执行和定期执行.点击'完全备份'和'增量备份'即可开始周期任务.定期完全备份的时间为自任务开始后每隔48小时的凌晨5点,定期增量备份为...

    mysql自动备份和自动导入

    在Java程序中实现MySQL自动备份可以通过调用`mysqldump`命令来完成。具体步骤如下: 1. **创建Runtime对象**:使用`Runtime.getRuntime()`获取运行时环境实例。 2. **执行mysqldump命令**: - 参数解析:通过`-u`...

    java_mysql_bak.zip_mysql 备份_备份_备份mysql

    6. 并发和调度:如果需要定期自动备份,可以将此功能封装到一个服务中,利用Java的定时任务框架如`ScheduledExecutorService`,或者集成更复杂的调度工具如Quartz。 在压缩包的文件名称列表中提到的"java 实现mysql...

    java编写的数据库自动备份源码

    Java编写的数据库自动备份源码是一种实用的工具,它能够帮助数据库管理员定期、高效地创建数据库的备份,确保数据的安全性。在IT行业中,数据库管理是至关重要的,因为任何数据丢失都可能导致重大的业务损失。数据库...

    java备份与恢复mysql数据库源码

    本文将详细讲解如何使用Java来实现MySQL数据库的备份与恢复功能,以及相关的关键知识点。 首先,我们需要理解数据库备份的基本原理。备份是为了防止数据丢失,通常包括全量备份和增量备份。全量备份是指复制整个...

    mysql 数据库备份 java 源代码

    总之,使用Java结合Hibernate进行MySQL数据库备份是一种常见的做法,它充分利用了Java的灵活性和Hibernate的便利性,使备份过程更加自动化和可控。开发者可以根据具体需求定制备份策略,实现高效、安全的数据保护。

    MySQL技术大全:开发、优化与运维实战实例源代码.rar

    《MySQL技术大全:开发、优化与运维实战实例源代码》是一本深入探讨MySQL数据库系统的技术书籍,涵盖了开发、性能优化和运维等多个方面的实践内容。这本书的源代码包含了丰富的实例,帮助读者更好地理解和应用书中...

    java_mysql备份.rar

    总的来说,使用Java进行MySQL数据库备份是一种灵活且可扩展的方法,尤其适合自动化和集成到现有的系统中。不过,需要注意的是,这种备份方式可能不适合大规模数据库,因为完全依赖Java程序来处理所有数据可能会消耗...

    通过Java代码备份Mysql数据库Demo

    如果是在没有该工具的环境(比如Windows的某些版本),你可能需要寻找其他方式,如使用Java库如`Flyway`或`Liquibase`,它们提供了更直接的数据库备份和迁移功能。 在实际项目中,数据库备份可能会更复杂,包括增量...

    java实现mysql数据库的表导出到excel文件

    在IT行业中,将数据库数据导出到Excel文件是一种常见的需求,尤其在数据分析、报表生成或者数据备份时。本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 ...

    远程备份MySQL数据库

    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备份还原数据库

    在Java中,可以使用`Runtime.getRuntime().exec()`方法调用操作系统命令(如mysqldump for MySQL)来完成物理备份。 - **逻辑备份**:通过执行SQL语句导出数据,例如`SELECT INTO OUTFILE`或`mysqldump --no-create...

    java调用mysql工具,实现数据库备份

    如果需要定期自动备份,可以将备份逻辑封装到一个方法中,然后利用Java的`java.util.Timer`或`ScheduledExecutorService`实现定时执行。 7. **权限控制**: 考虑到安全性,确保用于备份的Java程序具有足够的MySQL...

    Java银行管理系统+MySQL

    《Java银行管理系统+MySQL》是基于JAVA编程语言和MySQL数据库技术构建的一款银行管理软件。该系统涵盖了银行日常操作中的核心功能,如开户、存款、取款、转账、修改密码以及销户等,实现了完整的业务流程。以下是这...

    java实现数据库容灾备份

    结合提供的标题"java实现数据库容灾备份"和描述"可以集成定时任务去实时备份或者定期备份,欢迎一起讨论",我们将详细介绍如何利用Java编写程序来自动化数据库的备份过程,并讨论相关技术要点。 首先,数据库备份是...

Global site tag (gtag.js) - Google Analytics