zoukankan      html  css  js  c++  java
  • mysql自动备份维护shell脚本 (copy)

    #!/bin/bash
    #Mysql 自动备份 压缩并上传到 指定ftp
    #设想每天凌晨3点备份mysql
    #编辑crontab配置文件
    #00 03 * * * backupmysql.sh
    #压缩并以“服务器名+时间 ”命名打包文件
    #数据量小的情况下以mail的方式发送到指定邮箱(需要建立sendmail服务)
    #数据量大的情况下以ftp的方式传送到指定的ftp服务器(远程ftp需开启)
    #linzhanghui.blog.chinaunix.net
    #程序部分以伪代码方式存在。
    #
    
    #1.设置mysql登陆参数
    dbuser=root
    dbpassword=123456
    dbserver=localhost
    dbname=cacti
    dbopt=--opt
    backupdir=/tmp/dbbackup/
    
    #2.设置ftp具体参数
    ftpserver=192.168.137.3
    ftpuser=userlin
    ftppassword=passwdlin
    
    #3.设置文件备份文件名,备份文件保存天数
    fileprefix=lzhserver
    dumpfilename=$backupdir$fileprefix`date -d now +%Y%m%d`.sql
    newfile=$fileprefix-`date -d now +%Y%m%d`.tar.gz
    keepdays=7
    
    #4.写入操作到日志文件(事先需建立)
    logfile=/var/log/mysqlbackup.log
    logtmp=/var/log/mybackup.tmp
    
    #=====如果没有备份文件夹则建立之======
    if [ ! -d "$backupdir" ];
    then
    echo "无此文件夹,建立中..."
    mkdir -p $backupdir
    fi
    #=====事先删除7天之前的备份数据库文件=====
    echo "开始执行备份...">>$logfile
    echo "删除保留天数之前的备份文件...">>$logfile
    find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {};
    echo "删除的备份文件:">>$logfile
    cat $logtmp >>$logfile
    echo "删除旧备份文件成功!" >>$logfile
    #=====备份+打包======
    if [ -f $backupdir$newfile ]
    then
    echo "$newfile 备份文件存在, 备份结束 ...">>$logfile
    else
    if [ -z $dbpasswd ]
    then
    mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename
    else
    mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname >$dumpfilename
    fi
    tar czvf $backupdir$newfile $dumpfilename
    echo "$backupdir$newfile 备份成功!+“$压缩包容量”">>$logfile
    fi
    #======以ftp方式发送=====
    ftp -i -n <<end_ftp
    open $ftpserver
    user $ftpuser $ftppassword
    lcd $backupdir
    hash
    prompt 
    put $newfile
    close
    bye
    end_ftp

    如果直接使用文件夹复制的方式备份mysql数据库
     
    1、先查一下DATADIR
    mysql> show variables like '%datadir%';
    2、关闲数据库
    # mysqladmin shutdown
    3、复制数据库文件
    cp -Rf  $datadir /xxx
    $datadir:就是你的数据目录

    另外测试过把.sql压缩成.sql.tar.gz
    数据库文件可以少很多很多空间

  • 相关阅读:
    我的大厂面试经历(附100+面试题干货)
    大厂面试题:集群部署时的分布式 session 如何实现?
    【转载】Android数据库(SqlLite)操作和db文件查看
    【转载】android ListView详解
    C#根据经纬度获取物理地址
    C#计算两个经纬度的距离
    EXT编写日志文件
    动态数组
    System.Windows.Forms.Timer和System.Timers.Timer的区别 [转]
    SQL Prompt 3 优秀的SQL查询工具 收藏
  • 原文地址:https://www.cnblogs.com/hebo/p/6000849.html
Copyright © 2011-2022 走看看