• 数据库的备份解决方案


    工作上,基本都是表的增删改查。与数据库的操作很多。为了数据安全,备份是必须要做的。

    实现的逻辑:写了一个java的定时器,读取配置文件pro.properties中的 时间参数,在每天的 8点7分0秒 执行一次备份的bat命令。 24小时后再次执行

    首先:java工程部分:

    package xxx包;
    
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Date;
    import java.util.Properties;
    import java.util.Timer;
    import java.util.TimerTask;
    
    import xx包.MyDate;
    
    
    
    
    /*2014年1月13日 15:56:06
     * 备份数据库的定时任务
     * 执行cmd命令
     * 
     * 
     * */
    public class BackUpMysql {
    	
    
    
    	private Timer timer;
    	
    	private Date startDate;//启动时间
    	private long pollingInterval;//24*60*60*1000; //任务重复的间隔 设定为24小时
    	
    	
    	
    	
    //构造函数
    	public BackUpMysql(Date date,long time) {
    			this.timer = new Timer();
    			this.startDate = date;
    			this.pollingInterval = time;
    	}
    
    	
    	//主方法   启动定时器 ,
    	public void start(){
    		
    		
    
    		
    		//设定在某个时间启动,然后反复执行
    		timer.schedule(new FileMonitor(),startDate,pollingInterval);
    		
    		
    	}
    	
    	
    	//定时器的执行任务对象 由 Timer 安排为一次执行或重复执行的任务
    	private class FileMonitor extends TimerTask {
    		public void run() {
    			//备份数据库的方法
    			String command = "cmd /k  .\config\backupmysql.bat";
                try {
    				Process child = Runtime.getRuntime().exec(command);
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
               // child.waitFor();  
    			
    			
    		}
    	}
    	//程序入口
    	public static void main(String[] args) {
    		Properties p = null;
    		InputStream in =null;
    		
    		int hour = 0;
    		int min =1;
    		int second =0;
    		long delayTime = 1000*60*60*24;
    		
    		try {
                    //读取配置文件 in = new BufferedInputStream(new FileInputStream(".\config\pro.properties")); p = new Properties(); try { p.load(in); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } hour = Integer.parseInt(p.getProperty("hour")); min = Integer.parseInt(p.getProperty("min")); second = Integer.parseInt(p.getProperty("second")); delayTime = (long)Integer.parseInt(p.getProperty("delayTime")); BackUpMysql bkmysql = new BackUpMysql(MyDate.time(hour, min, second),delayTime); bkmysql.start(); } }

     上面是主类和方法

    用到一个时间类

    package xxxxx;
    
    /*
     * 2013年12月18日 19:29:59
     * 吴文付 时间戳*/
    
    import java.util.Calendar;
    import java.util.Date;
    
    public class MyDate {
    	
    	/*返回一个指定的时间*/
    	public static Date time(int day, int min,int second){
    		
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(Calendar.HOUR_OF_DAY, day);
    		calendar.set(Calendar.MINUTE, min);
    		calendar.set(Calendar.SECOND, second);
    		Date time = calendar.getTime();
    		
    		return time;
    	}
    	
    	
    	
    	
    
    }
    

     备份mysql的bat文件如下:

    @echo off
    
    
    ::获得时间戳 用来命名备份的文件夹
    set FileTime=%date:~0,4%%date:~5,2%%date:~8,2%
    ::你的mysql bin目录
    path "E:\work\APMServ-v5.2.6\APMServ5.2.6\MySQL5.1\bin\"
    
    ::创建备份文件存放的文件夹 
    md "e:\3web\php\databaseBackUp"
    md "e:\3web\php\databaseBackUp\"%FileTime%
    
    ::设置备份的数据保存的路径 
    set filepath="e:\3web\php\databaseBackUp\"%FileTime%"\你取个名字.sql"
    
    
    
    //这里 2个root 分别是用户名和密码
    mysqldump -u root -proot --opt 库名 > %filepath%
    QQ:540045865 热爱生活,热爱编程。
  • 相关阅读:
    mongodb副本集群搭建
    redis 哨兵集群搭建
    mysql binlog备份
    MySQL 日志
    mysql 事务及innodb隔离级别
    sysbench使用
    PXC安装
    mysql搭建主从数据库
    GTID
    文件的压缩和解压
  • 原文地址:https://www.cnblogs.com/jsRunner/p/3524484.html
Copyright © 2020-2023  润新知