zoukankan      html  css  js  c++  java
  • MYSQL数据库自动本地/异地双备份/MYSQL增量备份

    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图

      继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构。针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工作。
    电 子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份、异地备份架构。其中Linux服务器的备份方案非常多,本文介绍一个大众化适用的解决方 案,通过编写Shell脚本来完成自动备份。本架构包括备份网站文件、数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份、异地备份,实现双层 备份解决方案。

    本文要点:

    1.MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份。
    2.编写Shell脚本来完成自动MYSQL备份、MYSQL数据库增量备份。
    3.同时进行自动本地/异地双备份,FTP上传备份。
    4.Linux服务器的备份解决方案。
    5.Shell脚本包括备份网站文件,网站程序文件、数据文件,MYSQL数据库。
    6.定期定时自动完成备份。定期删除旧备份,这里是自动删除30天前备份,复用利用备份空间。

    目录:

    一、准备工作
    二、网站运维异地备份方案及故障应急备用镜像站架构图
    三、网站MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份Shell脚本,完整的实例;备份脚本进行详细解说,注释。

    在 运营中的电子商务网站,建站之初就一直在重申一定要备份好自己的数据,因为太多的不确定性可能会造成数据库丢失,而且大部分基础服务商也不可能提供每天备 份数据。原来本BLOG提供过一个备份方法,介绍了Shell脚本MYSQL数据库自动备份,没有介绍MYSQL数据库增量备份。今天分享一个自己的备份 脚本。
    参考之前的文章 http://jimmyli.blog.51cto.com/3190309/691069 《构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]》

    一、准备工作:

    Linux服务器安装好lftp,另外需要提前在Linux服务器上创建/home/backup/ 备份目录建立。并且保证FTP能正常使用账户密码登陆上次文件。既是保证FTP服务正常提供服务。


    二、网站运维异地备份方案及故障应急备用镜像站架构图


    三、网站MYSQL数据库自动本地/异地双备份/MYSQL数据库增量备份Shell脚本

    脚本二:
    MYSQL数据库增量备份Shell脚本

    如果数据库数据量比较大,可以一天全备一次, 再每隔一小时增量备份一次;
    建立增量备份目录
    增量备份的文件放在/backup/mysql/daily目录下。
    增量备份的数据量比较小,但是要在完整备份的基础上操作。

    增量备份使用bin log,脚本如下:

    双击代码全选
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #!/bin/sh  
    # mysql data backup script  
    # use mysqldump --help,get more detail.  
    #Author: Jimmy Li  
    # mysql binlog backup script  
             
    /usr/bin/mysqladmin flush-logs  
             
    DATADIR=/var/lib/mysql  
    BAKDIR=/backup/mysql/daily  
             
    ###如果mysql bin log你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名  
    HOSTNAME=`uname -n`  
    cd $DATADIR  
    FILELIST=`cat $HOSTNAME-bin.index`  
             
    ## COUNTER number  
    COUNTER=0  
    for file in $FILELIST  
    do  
    COUNTER=`expr $COUNTER + 1 `  
    done  
             
    NextNum=0  
    for file in  $FILELIST  
    do  
    base=`basename $file`  
    NextNum=`expr $NextNum + 1`  
    if [ $NextNum -eq $COUNTER ]  
    then
    echo "skip lastest"
    else
    dest=$BAKDIR/$base  
    if(test -e $dest)  
    then
    echo "skip exist $base"
    else
    echo "copying $base"
    cp $base $BAKDIR  
    fi  
    fi  
    done  
             
    echo "backup mysql binlog ok"

    脚本解析说明:
    增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
    因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.

    温馨提示、增量备份:
    每天中午03点和晚上03点做一次全备,每隔一小时备份binlog,也就是增量备份,具体操作如下:

    Linux下开启binlog

    将脚本放到/root/ 下面,按上面的注释修改脚本中的参数,使用vim编辑器并保存。
    执行:chmod +x /root/backup.sh 为脚本添加执行权限。
    执行:crontab -e 添加定时执行。
    在crontab中加入:0 3 * * * /root/backup.sh
    凌晨3点自动执行/root/bakcup.sh 脚本,备份Linux服务器上的数据并上传到预先设定好的异地FTP上。
    选择在凌晨3进行备份,是因为这个时间段网站的访问量是最低。也就是说在很少人访问的情况下做备份操作。

    双击代码全选
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /etc/my.cnf中的mysqld部分加入:  
    [mysqld]  
    log-bin=../logs/mysql-bin  
    max-binlog-size=512M  
             
    windows下开启binlog  
    %mysql%/my.ini中的mysqld部分加入:  
    [mysqld]  
    log-bin =../logs/mysql-bin  
    max-binlog-size=512M

    脚本一:
    网站及数据库自动本地备份并FTP上传备份Shell脚本,完整的实例:

    双击代码全选
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #!/bin/bash  
    #Funciont: Backup website and mysql database
    #Author: Jimmy Li  
    #IMPORTANT!!!Please Setting the following Values!  
    Backup_Dir1=/data/wwwroot/jimmyli.jimmyli.jimmyli.blog.51cto.com  
    MYSQL_UserName=root  
    MYSQL_PassWord=你的mysql数据库root密码  
    Backup_Database_Name1=jimmyli.jimmyli.jimmyli.blog.51cto.com  
    FTP_HostName=jimmyli.jimmyli.jimmyli.blog.51cto.com  
    FTP_UserName=jimmyli.jimmyli.jimmyli.blog.51cto.com  
    FTP_PassWord=jimmyli.jimmyli.jimmyli.blog.51cto.com  
    FTP_BackupDir=jimmyli.jimmyli.jimmyli.blog.51cto.com  
    TodayWWWBackup=www-*-$(date +"%Y%m%d").tar.gz  
    TodayDBBackup=db-*-$(date +"%Y%m%d").sql  
    OldWWWBackup=www-*-$(date -d -30day +"%Y%m%d").tar.gz  
    OldDBBackup=db-*-$(date -d -30day +"%Y%m%d").sql  
    tar zcf /home/backup/www-$Backup_Dir1-$(date +"%Y%m%d").tar.gz -C /home/wwwroot/ $Backup_Dir1 --exclude=soft  
    /usr/local/mysql/bin/mysqldump -u$MYSQL_UserName -p$MYSQL_PassWord $Backup_Database_Name1 > /home/backup/db-$Backup_Database_Name1-$(date +"%Y%m%d").sql  
    rm $OldWWWBackup  
    rm $OldDBBackup  
    cd /home/backup/  
    lftp $FTP_HostName -u $FTP_UserName,$FTP_PassWord << EOF  
    cd $FTP_BackupDir  
    mrm $OldWWWBackup  
    mrm $OldDBBackup  
    mput $TodayWWWBackup  
    mput $TodayDBBackup  
    bye  
    EOF

    备份脚本进行详细解说,注释参考 http://jimmyli.blog.51cto.com/3190309/691069 《构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)[连载之电子商务系统架构]》
    ========================================================================

    网站运维异地备份方案及故障应急备用镜像站

    定期检查异地备份故障应急时,启用应急Web服务
    连接:http://jimmyli.blog.51cto.com/3190309/584992 网站运维异地备份方案及故障应急备用镜像站

    本文出自 “Jimmy Li我站在巨人肩膀上” 博客,请务必保留此出处http://jimmyli.blog.51cto.com/3190309/888630

  • 相关阅读:
    窗口总在最前的时候信息框弹出解决
    IP地址与子网掩码知识
    六类线、五类线、超五类线有什么区别?
    如何删除internet网关连接图标
    密码输入框用“●”做遮盖符
    万象2004数据库说明
    客户机绑定路由例子bat
    命令行下导入、导出注册表
    网管维护常用命令
    hadoop shell 操作命令
  • 原文地址:https://www.cnblogs.com/xred/p/3731833.html
Copyright © 2011-2022 走看看