java操作数据库定时备份与还原

mysql每天23:00自动备份

  1. public class DatabaseBackup {
  2. /**
  3. *
  4. * @param dbdir mysql数据库安装路径
  5. * @param dbname  数据库的名称
  6. * @param backdir 备份的目录
  7. */
  8. public static void backup(String dbdir, String dbname, String backdir) {
  9. Calendar calendar = Calendar.getInstance();
  10. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HHmmss");
  11. String currentTime = dateFormat.format(calendar.getTime());
  12. try {
  13. long startTime = System.currentTimeMillis();
  14. Runtime rt = Runtime.getRuntime();
  15. Process child = rt
  16. .exec(dbdir + "/bin/mysqldump --default-character-set=utf8 -uroot -p123456 " + dbname);
  17. InputStream in = child.getInputStream();
  18. InputStreamReader xx = new InputStreamReader(in, "utf8");
  19. FileOutputStream fout = new FileOutputStream(new File(backdir, dbname + "_" + currentTime + ".bak"));
  20. OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
  21. dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  22. writer.write("-- Dump by Microsoul at " + dateFormat.format(calendar.getTime()) + "\r\n");
  23. String inStr;
  24. BufferedReader br = new BufferedReader(xx);
  25. // 这样实时写入文件很重要,网上有很多是将读取的存入字符串中,最后再写成文件,这样会导致Java的堆栈内存溢出。
  26. while ((inStr = br.readLine()) != null) {
  27. writer.write(inStr);
  28. writer.write("\r\n");
  29. }
  30. writer.write("\r\n-- Use " + (System.currentTimeMillis() - startTime) + "ms\r\n");
  31. writer.flush();
  32. in.close();
  33. xx.close();
  34. br.close();
  35. writer.close();
  36. fout.close();
  37. } catch (Exception e) {
  38. PrintStream print = null;
  39. try {
  40. print = new PrintStream(new File(backdir, currentTime + "_backup_err.log"));
  41. dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
  42. currentTime = dateFormat.format(calendar.getTime());
  43. print.println(currentTime + "  backup failed.");
  44. e.printStackTrace(print);
  45. print.flush();
  46. } catch (IOException e2) {
  47. } finally {
  48. if (print != null) {
  49. print.close();
  50. }
  51. }
  52. }
  53. }
  54. }

以上是备份的代码;

Java代码  

  1. public class Test {
  2. public static void main(String[] args) {
  3. Calendar twentyOne = Calendar.getInstance();
  4. twentyOne.set(Calendar.HOUR_OF_DAY, 23);
  5. twentyOne.set(Calendar.MINUTE, 0);
  6. twentyOne.set(Calendar.SECOND, 0);
  7. new Timer().schedule(new TimerTask() {
  8. @Override
  9. public void run() {
  10. DatabaseBackup.backup("/usr/local/mysql", "test", "/home/xtiger/db/");
  11. }
  12. }, twentyOne.getTime(), 24 * 3600 * 1000);
  13. }
  14. }
时间: 2024-10-07 02:42:59

java操作数据库定时备份与还原的相关文章

SQLServer2008修改sa密码的方法与SQL server 2008数据库的备份与还原

sa密码的修改转载自:http://blog.csdn.net/templar1000/article/details/20211191 SQL server 2008数据库的备份与还原转自 :http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 一.SQLServer2008修改sa密码的方法 1. 先用Window身份验证方式登陆进去,选择数据库实例,右键选择属性--安全性:把服务器身份验证选项从"Window身份验

Linux下crontab+php实现Mysql数据库定时备份

引言 大项目中的数据库备份是必不可少的,否则一旦出现大问题就GG了,虽然本文是讲述利用PHP实现数据库定时备份,但是这并不是好的方案 想要定时备份数据库,最快捷安全的方法就是利用shell脚本了,功能强大操作方便,而且执行速度极快,不像PHP还需要被apache解析一把.. 当然,不管是用php定时备份,还是shell脚本定时备份,都离不开crontab这玩意,毕竟它才是真正的定时器,这里粗略的说一下crontab吧 crontab使用简介 crontab常用基础命令 crontab -e //

mysql数据库定时备份

操作步骤:1.将脚本放到任意位置下,不容易被误删即可2.定时任务,一周执行一次脚本 脚本如下:#!bin/bash backuppath=/data/mysql/backup date=$(date +%Y%m%d%H%M) SQLuser=root SQLpwd=password mysqldump=/usr/local/mysql/bin/mysqldump mysql=/usr/local/mysql/bin/mysql HIS_Date=`date -d $(date -d "-30 d

达梦数据库的备份和还原

达梦数据库的备份和还原 达梦数据库的备份还原方式:物理备份还原和逻辑备份还原物理备份:冷备:(dmap服务打开的状态下,数据库是关闭的)热备:(dmap服务一定是打开的,数据库是打开的,数据库要开归档)物理备份还原是对数据库的操作系统物理文件(如数据文件.控制文件和日志文件等)的备份还原. 逻辑备份:导出:dexp导入:dimp逻辑导出和逻辑导入数据库对象分为四种级别:数据库级.用户级.模式级和表级.四种级别独立互斥,不能同时存在.四种级别所提供的功能: ? 数据库级(FULL):导出或导入整个

java 操作数据库clob类型大字段

java 操作数据库clob类型大字段,处理工具类如下: package org.shefron.utils; import java.io.StringReader; import java.sql.Clob; import java.sql.PreparedStatement; import java.sql.SQLException; public class ClobUtils { public final static String getValueFromClob(Clob clob

sqlserver多文件组数据库的备份和还原实战

数据库文件过大时就要进行数据分区,就是讲数据库拆分到多个文件组中.已方便数据文件管理,提高数据库的读取效能,多文件组如何进行数据库的备份和还原呢,今天主要做多文件组数据库的备份和还原实验. 第一步 创建数据库qhw_test 数据库包括一个userinfo 数据表,userinfo数据表根据id做分区 包括一个主分区 ,五个次分区,主分区包括qhw_test,data2两个文件, 数据表脚本如下 CREATE TABLE [dbo].[userinfo](    [Id] [int] IDENT

使用教程 - BestSync同步软件 - SQL2008R2 数据库定时备份解决方案

需求: 1.      某公司的管理软件,数据库为SQL2008R2.2.      将整个数据库作为一个文件,定时同步到FTP 服务器3.      需要有多个备份,每同步一次,都备份上次的文件到备份文件夹. 要点:1.      执行同步任务前需要关闭SQL Server服务.用户添加数据条目到数据库后,数据库文件的修改时间不会同步改变.2.      勾选“影子复制”功能.BestSync将能同步正在编辑的数据库文件.3.      只能设置定时同步. 数据库文件修改时间需要通过预先执行批

windows server 2012R2数据库的备份与还原

windows server 2012R2数据库的备份与还原 实验模拟:北京有一个uec.com 的主服务器,需要在上海创建一个额外域控制器,但上海与北京网络延迟较大,正常复制不成功. 思路:在北京创建一个AD数据库的介质文件,存放AD数据库内的数据,将此介质文件复制到上海的服务器上,在上海利用 介质问价创建额外域控制器. 准备环境: 北京: server 01       IP: 192.168.1.101 上海: server 02       IP: 192.168.1.102 步骤一:在

JDBC——java操作数据库的一系列接口

一.JDBC概述(mysql) 1.Java DataBase Connective 1)概念:JDBC其实就是一套Java操作数据库的规范(接口); 2)数据库驱动: 各个数据库厂商要让java语言去操作数据库就必须实现这套接口,每个数据库都写有一套实现类叫数据库驱动. 3)使用: //导入mysql数据库jar包 //将jar放在lib目录下 右键add--->builderpath //加载驱动 Class.forName("com.mysql.jdbc.Driver");