JAVA代码实现数据库备份

简介: 在开发过程中,为了数据的安全性,我们经常需要定时备份一下数据库,这就需要在定时任务里,通过java代码实现数据库的备份。当然,这只是其中一种比较简单的实现方式。其他实现方式,会在后续进行探讨。
// 备份文件存放路径,我这里以当前日期作为文件夹
String root = JRelaxSystemConfigHelper.get("upload.folder.root", JRelaxCoreConfigHelper.getProperty("resource.upload.path"));
String uploadPath = JRelaxIOHelper.getInstance().resolvePath(root) + "mysqlbak/" + DateKit.format(new Date(), "yyyyMMdd");
String dbhost = "127.0.0.1";
String dbname = "dbname";//要备份的数据库名称
String dbusername = "dbusername";//数据库用户名
String dbpassword = "dbpassword";//数据库密码
System.err.println(StringKit.format("-------------获取到备份数据库: {0},{1},{2}", dbname, dbusername, dbpassword));
// 备份文件名称
String backName = dbname + "_" + dbhost + "_" + DateKit.format(new Date(), DateKit.HHMM) + ".sql";
String pathSql = uploadPath + "/" + backName;
try {
    File fileSql = new File(pathSql);
    // 创建备份sql文件
    if (!fileSql.getParentFile().exists()) {
        if (!fileSql.getParentFile().mkdirs()) {
            throw new IOException("文件夹创建失败");
        }
    }
    StringBuffer sb = new StringBuffer();
    sb.append("mysqldump");
    if(!"127.0.0.1".equals(dbhost))
        sb.append(" -h " + dbhost);
    sb.append(" -u" + dbusername);
    sb.append(" -p" + dbpassword);
    sb.append(" --databases " + dbname);
       //如果要过滤掉部分表不备份,可以通过--ignore-table参数
    String[] ignoreTables = { "sys_log", "sys_scheduler_log", "sys_file" , "sys_user"};
    for (String ignoreTable : ignoreTables) {
        sb.append(" --ignore-table=" + dbname + "." + ignoreTable);
    }

    sb.append(" >");
    sb.append(pathSql);
    System.err.println("cmd命令为:" + sb.toString());
    Runtime runtime = Runtime.getRuntime();
       //执行备份命令
    runtime.exec("cmd /c" + sb.toString());
       //打日志
    logService.info("数据库备份", StringKit.format("定时备份数据库成功:{0},{1},{2}", dbname, dbhost, backName), "schedule", new HandlerRequest());
} catch (Exception e) {
    e.printStackTrace();
    logService.info("数据库备份", StringKit.format("定时备份数据库失败:{0},{1},{2}_{3}", dbname, dbhost, backName,e.getMessage()), "schedule", new HandlerRequest());
}
目录
相关文章
|
16天前
|
Java 测试技术 应用服务中间件
常见 Java 代码缺陷及规避方式(下)
常见 Java 代码缺陷及规避方式(下)
43 0
|
17天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
20天前
|
前端开发 小程序 Java
uniapp上传图片 前端以及java后端代码实现
uniapp上传图片 前端以及java后端代码实现
34 0
|
4天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
4天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
ava从入门到精通:2.3.1数据库编程——学习JDBC技术,掌握Java与数据库的交互
|
12天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
15天前
|
Java
代码的魔法师:Java反射工厂模式详解
代码的魔法师:Java反射工厂模式详解
26 0
|
16天前
|
监控 安全 Java
常见 Java 代码缺陷及规避方式(中)
常见 Java 代码缺陷及规避方式(中)
27 1
|
18天前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
15 0
|
19天前
|
设计模式 Java
23种设计模式,状态模式的概念优缺点以及JAVA代码举例
【4月更文挑战第9天】状态模式是一种行为设计模式,允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类。
29 4

热门文章

最新文章