• Mysql数据库备份脚本


    数据库备份脚本

    按照时间来创建目录备份数据,需要配合crontab

    00 1 * * * root /etc/mysqldumpjumpser.sh

    每天早上凌晨1点备份数据

    #!/bin/bash
    USER=jumpserver
    PASS=jumpserver
    DBDIR=/databak/Data_Backup
    #DAY=`date  +%Y%m%d`
    #年月
    MONTH=`date +%Y%m`
    #日期时间
    DT=`date '+%Y%m%d%H%M'`
    #主机ip
    DBIP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | awk -F '"' '{print $2}'`
    #创建备份目录
    mkdir -p $DBDIR/$DBIP/$MONTH
    备份数据库
    for  dbname in jumpserver
    do
    	mysqldump  -u$USER   -p$PASS -R    --single-transaction  $dbname 2>>$DBDIR/$DBIP/$MONTH/error-$DT.log   |gzip  > $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz
      	# 生成md5sum文件
     	md5sum $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz > $DBDIR/$DBIP/$MONTH/$dbname-$DBIP-$DT.sql.gz.MD5
    done
    
    # check and delete old datafile.
    #删除超过30天的文件,并删除目录
    del_backup_dir=/databak/Data_Backup/$DBIP
    cd $del_backup_dir
    if [ $? = 0 ]; then
            find ./ -type f -mtime +30 -exec rm -rf {} ; >/dev/null 2>&1
            find -depth -type d -empty -exec rmdir {} ;
    fi
    
    #压缩备份
    #mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
    #还原
    #gunzip -c abc.sql.gz |mysql -uroot -proot abc

    每月备份的数据会放到一个目录,十分乱,不容易看,这边改进一下

    没有多大的改变,就是加了DAY=`date -d '-1 days' +%d` :显示上一天的日期,我们crontab是凌晨1点备份,也就是备份上一天的数据。

    #!/bin/bash
    USER=jumpserver
    PASS=jumpserver
    DBDIR=/databak/Data_Backup
    DAY=`date -d '-1 days' +%d`
    MONTH=`date +%Y%m`
    DT=`date '+%Y%m%d%H%M'`
    DBIP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IP | awk -F '"' '{print $2}'`
    
    
    
    mkdir -p $DBDIR/$DBIP/$MONTH/$DAY
    for  dbname in jumpserver
    do
    	mysqldump  -u$USER   -p$PASS -R    --single-transaction  $dbname 2>>$DBDIR/$DBIP/$MONTH/$DAY/error-$DT.log   |gzip  > $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz
      	# 生成md5sum文件
     	md5sum $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz > $DBDIR/$DBIP/$MONTH/$DAY/$dbname-$DBIP-$DT.sql.gz.MD5
    done
    
    
    
    # check and delete old datafile.
    del_backup_dir=/databak/Data_Backup/$DBIP
    cd $del_backup_dir
    if [ $? = 0 ]; then
            find ./ -type f -mtime +30 -exec rm -rf {} ; >/dev/null 2>&1
            find -depth -type d -empty -exec rmdir {} ;
    fi
    
    #压缩备份
    #mysqldump -uroot -proot --databases abc 2>/dev/null |gzip >/abc.sql.gz
    #还原
    #gunzip -c abc.sql.gz |mysql -uroot -proot abc

    以日期目录分类,可以更方便的清楚

    人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。
  • 相关阅读:
    java中的锁
    CAS机制与自旋锁
    volatile关键字的特性及证明
    java中并发下的集合类
    数据库的分库分表
    浅入理解JVM
    99乘法表
    JAVA实现简单的时间刷新使用线程
    线程的优先级
    线程礼让
  • 原文地址:https://www.cnblogs.com/heian99/p/14533542.html
Copyright © 2020-2023  润新知